java

2022-01-23  本文已影响0人  wxy_7fa5

1.安装配置

1.JDK的下载和安装
  下载:http://www.oracle.com
  安装:D:\Develop\jdk12
JDK的安装目录
 bin:该路径下存放了JDK的各种工具命令。Javac和java就放在这个目录
 conf:该路径下存放了JDK的相关配置文件
 include:该路径下存放了—些平台特定的头文件
 jmods:该路径下存放了JDK的各种模块
 legal:该路径下存放了JDK各模块的授权文档
 lib:该路径下存放了JDK工具的一些补充JAR包
2.环境变量配置
 右键我的电脑,属性,高级系统设置,环境变量,新建系统变量:
   JAVA_HOME  D:\Develop\jdk12
 编辑系统变量中的path:%JAVA_HOME%\bin;
3.常用DOS命令
 win+R,cmd,cls,d:,dir,cd develop,cd develop\jdk12\bin,cd/,exit
 可直接用图形界面打开bin,然后搜索框输入cmd
 或在Notepad++中,右键标题,打开所在文件夹(命令行)
 设置,首选项,新建,默认语言选java,编码选ANSI 
4.IDEA下载安装
(1)安装:只勾选第一个:创建桌面快捷图标64
   设置层级展开项目:齿轮,取消第二个
   设置字体:file,settings,搜索font,size改成16
(2)IDEA项目结构介绍
  project (项目、工程)
  module(模块)
  package (包)
  class(类)
(3)创建项目:
 Empty Project-Modules-SDK选择jdk的安装目录
 在src下new个package,倒着写域名:com.xingyi.demo1
 new个javaClass
  运行:main方法左侧Run,或空白处右键
(4)快捷键:
  psvm+回车:快速生成main方法
  sout+回车:快速生或输出语句
  alt + 1 :打开\隐藏工程目录结构
  alt +4:打开\隐藏控制台
  Ctrl + alt + L  格式化代码
  Alt + enter  代码修正提示
  Ctrl +D 向下复制一行
  Ctrl + X 剪切当前行
  Ctrl + / 批量加入单行注释,再按一次就是取消
  Ctrl + shift +/ 批量加入多行注释,再按一次就是取消
  ALt + shift + ↑ 上移当前行
  Alt + shift + ↓ 下移当前行 

2.java背景

1.java语言的三个版本
  Java SE:Java语言的(标准版),用于桌面应用开发,是其他两个版本的基础。
  Java ME:Java语言的(小型版),用于嵌入式消费类电子设备(被安卓和ios取代了)
  Java EE:Java语言的(企业版),用于Web方向的网站开发。
2.Java跨平台原理 
  Java程序并非是直接运行的,而是由编译器将源程序编译成与平台无关的字节码文件(class文件),然后由Java虚拟机(JVM)对字节码文件解释执行。所以在不同的操作系统下只需安装不同的Java虚拟机即可实现java程序的跨平台。
3.JRE和JDK
Java程序开发的三个步骤:编写代码,编译代码,运行代码
编写代码:.java文件属于【源文件】,是无法被JVM所识别执行的
编译代码:产生可被虚拟机识别的.class文件(字节码文件)
运行代码:使用运行工具将class运行在JVM虚拟机中(多个class文件具体运行哪个)
  编写代码的过程中,需要使用JRE中 Java已经写好的代码。
  编译代码的过程中,需要使用JDK中的翻译工具。
  运行代码的过程中,需要使用JDK中的运行工具。
  代码最终运行在JVM当中。
 JVM(Java Virtual Machine),Java虚拟机
 JRE(Java Runtime Environment),Java运行环境,包含了JVM和Java的核心类库(Java API)
 JDK(Java Development Kit)称为Java开发工具包,包含了JRE和开发工具  

3.规则

3.1 标识符和关键字

1.注释
单行注释:格式://注释信息
多行注释:格式︰/*注释信息*/
文档注释:格式:/**注释信息*/,文档注释目前用不上,暂不讲解。
2.关键字
关键字∶被Java赋予了特定涵义的英文单词
特点:字母全部小写。
     在编辑器针有特殊的颜色标记
     48个关键字:
abstract、assert、boolean、break、byte、case、catch、char.class、continue、default、do、double、else、enum、extends、final、finally、float、for、if、implements、import、int、
interface、instanceof、long、native、new、package、private、protected、public、return、short、static、strictfp、super.switch、synchronized、this、throw、throws、transient、try、void、volatile、while.
3.标识符:
  用来标识类名接口名、变量名方法名、文件名、类型名、数组名的有效字符序列。简单地说,标识符就是一个名字。
规则:
 ①可以由字母,数字,下划线(_),美元符($)组成,
  但不能以数字开头,不能包含空格,%,@等其他特殊字符。
 ②要区分大小写且不能是java关键字 
包名:全部小写
类、接口名:所有单词首字母均大写 
变量名,方法名:
  ①单个单词:全部小写
  ②多个单词,第一个单词首字母小写,其后的单词首字母大写
4.运算符
 算术运算符: +-*/ %++ --
 关系运算符:>>=<=<!=
 逻辑运算符:&& ll !
 位运算符:& │ ^~
 赋值运算符:=
5.编程语言的几个发展阶段
  ◆面向机器语言
  ◆面向过程语言
  ◆面向对象语言
  面向对象编程主要体现下列三个特性:
     ◇封装性
     ◇继承
     ◇多态

3.2 数据类型划分

1.八个基本数据类型和四个引用数据类型
基本数据类型:整数类型,浮点类型,字符类型,布尔类型
引用数据类型:类,接口,数组,枚举类型
2.整数类型有三种表示形式
十进制整数,八进制整数(0开头),十六进制整数(以0x开头)
若要表示长整型在数字后面加L。(88L)
3.浮点类型有两种表示形式
十进制数形式(0.123)和科学计数法形式(123e3)
float型小数后面加F,double型小数后面加D,带小数点的数默认是Double型。
4.布尔类型
只有两个值true和false,在内存中占4个字节
5.类型转换
(1)自动类型转换
基本类型优先关系从低到高:byte->short->char->int->long>float->double
int i; double j=i;(机器自动转化)
(2)强制类型转换
int i=12;byte b=(byte)i; //int类型强制转换成byte
(3)其他类型转换
字符串转数字:Integer.parseInt(String s)//转为整型数字
数字转字符串:String.valueOf(各种类型的数值变量).
    Byte.toString(byte b)
    空串连接数字:“”+25

数据类型.png

3.3 数组

1.一维数组
(1)声明数组 int intArray[];
(2)引用数组
  intArray[索引]
  intArray.length
(3)初始化数组
  直接赋值创建:String stringArray[]= {"abc", "How"};
  用new创建:String s[]=new String[2];
            s[0]=new String("Good");
2.多维数组
(1)声明数组 int intArray[][];
(2)引用数组
  intArray[索引][索引]
(3)初始化数组
  直接赋值创建:int a[][]={{1,2},{2,3},{3,4,5}};
    java中把二维数组看作数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。
  用new创建:int a[][]=new int[2][3];//直接为每一维分配空间
           String s[][]=new String[2][];开辟两行存储空间
           s[0]= new String[2];/为第一维第一个单元分配空间
           s[0][0]=new String("Good");
           s[0][1]=new String("Luck");

3.4 枚举类型

语法格式如下:
enum 枚举名
{常量列表
}
案例:
enum season {
  春季,夏季,秋季,冬季
}
public class Example2-8{
public static void main (string args [ ]){
  season x=season.春季;
  system.out.println(x);
}

3.5 程序控制语句

1.switch语句(判断季节)
switch (y){
  case 3:
  case 4:
  case 5:
     System.out.println("春天(spring) ");
     break;
  case 6:
  case 7:
  case 8:
     System.out.println("夏天(summer) " );
     break;
  case 9:
  case 10:
  case 11:
     System.out.println("秋天(autumn)");
     break;
  case 12:
  case 1:
  case 2:
     System.out.println("冬天( winter) ");
     break;
  default: 
     System.out.println("季节输入有误");
}
2.包语句
通过package关键字声明包语句,是Java源文件的第一条语句,为该源文件中声明的类指定包名。
  package语句的一般格式为: package 包名;
3.import语句
通过import关键字来引用不在同一个包中的类。
  例如: import tom.jiafei.*;
  

3.6类

1.类
  class 类名              //类声明
  {                             //类体
    类体的内容
  } 
类的实现包括两部分:类声明和类体。
  ◆类体的内容包括两部分:一部分是变量的定义,用来刻画属性;另一部分是方法的定义,用来刻画功能。
2.变量分类
  成员变量:在类中声明的变量,分为
    静态变量:被static关键字修饰的变量。
    实例变量:没有static关键字修饰的变量。
  局部变量:在方法中声明的变量,只在方法内有效 
3.成员变量的隐藏:
  局部变量与成员变量的名字相同,则成员变量被隐藏,这个成员变量在这个方法内暂时失效
4.方法分类
  静态方法:被static关键字修饰的方法。
  实例方法:没有static关键字修饰的方法。
5.方法重载:同一个类中,方法名相同,方法参数不同即参数的个数或类型不同。(返回值类型要一致)
6.构造方法:方法名和所在的类的名字完全相同,并且没有返回值类型。(构造方法也可以重载)

3.7对象

1.声明对象point1和point2:                                  Point point1,point2;
2.为对象分配内存,使用new运算符和类中的构造方法:              point1=new Point(10,10);
3.调用对象的变量和方法:使用运算符"."                   

3.8 访问权限

权限.png
使用关键字public,protect,friend,private来修饰成员变量或方法。
eg:
class Tom{
  private float weight;
  private float f(float a,float b){
    return a+b;
  }
class Jerry{
  void g(){
    Tom cat=new Tom ( );
    cat.weight=23f;              //非法, private类型的变量的访问权限在同一个类中
    float sum=cat.f(2.3);      //非法, private类型的方法的访问权限在同一个类中
  } 
private修饰的变量或方法,只有在同一个类中才可以调用
friend修饰的变量或方法,在同一个类或同一个包中才可以调用
protected修饰的变量或方法,在同一个类,同一个包或不同包的子类时都可以调用
public修饰的变量或方法,在同一个类,同一个包或不同包的子类,不同包的非子类时都可以调用

3.9 继承

1.继承与父类子类

1.继承
若父类和子类在同一个包中,子类可以继承父类中不是private的成员变量作为子类的成员变量。
若父类和子类不在同一个包中,子类可以继承父类中public,protect成员变量作为子类的成员变量。
2.子类对象的构造过程
  子类创建对象时,父类和子类中声明的成员变量都被分配了内存,但只将子类继承的那部分分配给子类。
3.成员变量的隐藏
  子类声明的成员变量和父类中的成员变量同名时,子类就隐藏了继承的成员变量。
4.方法重写
子类中的定义的方法,方法的类型,名字,参数个数与类型和父类完全相同,则子类对父类的方法实现重写。
5.super关键字
  在子类中调用被子类隐藏的成员变量或方法要使用super关键字。
6.final关键字
被final修饰的类不能被继承。
被final修饰的方法不能被子类重写。
被final修饰的变量就是常量。
7.对象的上转型对象
 ①A类是B类的父类,用子类创建的对象赋值给父类的对象,此时父类对象是子类对象的向上转型。
 B b=new B();
 A a=b;  //对象a是对象b的向上转型
 ②对象:不仅可以引用继承或隐藏的变量,继承或重写的方法,还可以引用新增的变量和新增的方法。
 对象的向上转型对象:只能引用继承(没重写)或隐藏(重写后)的变量,继承和重写的方法。
 ③上转型对象强制转化成子类对象
 B bb=(B)a;
image.png

2.继承与多态

多态:是指父类的某个方法被子类重写时,可以各自产生不同的功能.
image.png

3.抽象类和接口

一.抽象类
1. abstract类中可以有abstract方法也可以有非abstract方法,abstract类不能用new运算创建对象,将abstract类声明对象作为其子类的上转型对象,那么这个上转型对象就可以调用子类重写的方法。
注意:抽象类不能声明对象
2.子类必须重写父类的抽象方法 
二.接口

1.抽象类


image.png
image.png
image.png
image.png

2.接口

1.
一个子类只能继承一个父类,同一个类可以实现多个接口
接口的实现包括两部分:接口声明和接口体,接口体中包含常量定义和方法定义两部分。
2.接口回调
实现某一接口的类创建的对象的引用赋给该接口声明的变量,此时接口变量可以调用被类重写的接口方法。
(A类是B类的父类,用子类创建的对象赋值给父类的对象,此时父类对象是子类对象的向上转型。)
3.接口和抽象类的比较:
接口中只有常量,而抽象类中可以有变量。接口中只有抽象方法,而抽象类中可以有普通方法。

1.实例


image.png
image.png

2.接口回调


image.png
image.png
3.实例
image.png
image.png

4.实操

4.1 从命令行输入输出数据

(1)用Scanner类创建一个对象
Scanner reader—new Scanner(System.in);
(2)输入:调用next方法
nextBoolean()、nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble)。
double x=reader.nextDouble(;
(3)输出
System.out.println(x)
image.png
image.png
上一篇下一篇

猜你喜欢

热点阅读