1、安装jdk,配置环境变量
2、public class HelloWorld{
public static void main(String[] args){
System.out.println(‘HelloWorld’);
}
}
3、编译过程:通过javac编译java文件,生成.class文件,使用java命令运行class文件,注意不能带class后缀名。
4、数据类型:基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。
基本数据类型:整数型、浮点型、字符型、布尔型
引用数据类型:类、接口、数组
5、自动类型转换:Int类型和double类型相加会转换成double类型。
强制类型转换:(int)double类型的值.
6、自增、自减:
Int a=5;
Int b=a++;(先赋值给b,再自增)结果:a=6 b=5
Int b=++a;(先自增,后赋值给b)结果:a=6 b=6
7、条件运算符(三目运算符):布尔表达式?表达式1 :表达式2
8、用户输入实现 步骤:
导入Scanner包:import java.util.scanner;
创建Scanner对象:Scanner input =new Scanner(system.in);
接收用户输入的值并保存在变量中:Int a=input.nextInt();
9、定义数组:int[] scores={78,90,65,87}
定义一个长度为 3 的字符串数组,并赋值初始值:String[] hobbys = { "sports", "game", "movie" };
定义一个整型数组,并赋初值:int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
10、使用 Arrays 类操作 Java 中的数组:
导入Arrays类import java.util.Arrays;
// 定义一个字符串数组
String[] hobbies = { "sports", "game", "movie" };
// 使用Arrays类的sort()方法对数组进行排序
Arrays.sort(hobbies);
// 使用Arrays类的toString()方法将数组转换为字符串并输出
Arrays.toString(hobbies) ;
11、使用 foreach 操作数组:
for(元素类型 元素变量:遍历对象){
执行代码
}
// 定义一个整型数组,保存成绩信息
int[] scores = { 89, 72, 64, 58, 93 };
// 使用foreach遍历输出数组中的元素
for ( int score:scores ) {
System.out.println(score);
}
12、二维数组:
//定义一个两行三列的二维数组
int num[][] = new int[2][3];
二维数组赋值:int[][] num={{1,2,3},{4,5,6}};
也可以在声明数组的同时为其赋值
13、定义 Java 中的方法:
无参无返回值方法:
调用方法:
无参带返回值方法的使用:
14、方法的重载:方法名相同,参数不同(个数,类型,顺序不同)。
15、类的定义:
public class Students{
String name; //属性(成员变量)
String class;
Int age;
// 方法
void speak(){
System.out.println(“speak chinese”);
}
}
16、对象:
//创建对象:类名 对象名=new 类名();
Students stu=new Students();
//使用对象:
给属性赋值:对象名.属性名=值;stu.name=“张三”;
调用方法:对象名.方法名(); stu.speak();
17、成员变量和局部变量:
成员变量:定义在类中,描述对象有什么。
局部变量:定义在方法中,临时保存数据。
18、成员变量和局部变量的区别:
作用域不同:
成员变量的作用域在整个类内部可见,局部变量仅限于定义它的方法。
初始值不同:
成员变量有默认初始值,局部变量没有初始值。
优先级:两类变量同名时,局部变量有更高优先级。
19、构造方法:创建对象即可调用无参构造方法。
没有返回值类型,与类同名,可有参数。
public 构造方法名(){
//初始化代码
}
使用构造方法:类名 变量名=new 构造方法名();
当没有构造方法时,系统会自动添加无参的构造方法,当有构造方法时,不会自动添加无参的构造方法。
20、static静态变量:
使用 static 可以修饰变量、方法和代码块。静态成员属于这个类。
static修饰的方法,可直接通过类名.方法名访问。
注意:
1、 静态方法中可以直接调用同类中的静态成员和方法,但不能直接调用非静态成员和方法。需要通过对象来访问非静态方法。
2、在普通成员方法中,则可以直接访问同类的非静态变量和静态变量。
21、static 使用之静态初始化块:
静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量。
eg:
22、面向对象的三大特性:封装、继承、多态
封装:将类的某些信息隐藏在类的内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。
封装的实现步骤:
- 修改属性的可见性:设为private
- 创建getter/setter方法
- 在getter/setter方法中加入属性控制语句
23、访问修饰符:
24、this关键字:
this关键字代表当前对象
this.属性 操作当前对象的属性
this.方法 调用当前对象的方法
25、内部类:内部类( Inner Class )就是定义在另外一个类里面的类。与之对应,包含内部类的类被称为外部类。
内部类的主要作用如下:
1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便
内部类可分为以下几种:
- 成员内部类
- 静态内部类
- 方法内部类
- 匿名内部类
调用内部类方法: 定义了成员内部类后,必须使用外部类对象来创建内部类对象,而不能直接去 new 一个内部类对象,即:内部类 对象名 = 外部类对象.new 内部类( );
内部类方法中访问外部类的成员属性:Outer.this.name;
26、静态内部类:
静态内部类是 static 修饰的内部类,这种内部类的特点是:
1、 静态内部类不能直接访问外部类的非静态成员,但可以通过 new 外部类().成员 的方式访问
2、 如果外部类的静态成员与内部类的成员名称相同,可通过“类名.静态成员”访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过“成员名”直接调用外部类的静态成员
3、 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类对象名= new 内部类();
27、方法内部类:方法内部类就是内部类定义在外部类的方法中,方法内部类只在该方法的内部可见,即只在该方法内可以使用。
28、继承:java中的继承是单继承。
子类拥有父类的所有属性和方法(除了private修饰的)。
class Dog extends Animals{
…….
}
29、方法的重写:子类可以重写父类继承的方法,当调用方法时会优先调用子类的方法。
返回值类型、方法名、参数类型及个数都要和父类继承的方法相同。
30、final关键字:final可以修饰类、方法、属性、变量
final修饰类,该类不能被继承
final修饰方法,该方法不能被覆盖(重写)
final修饰属性,类的初始化属性必须有值或在构造方法中赋值
final修饰变量,该变量的值只能赋一次值,即为常量。
31、super关键字:代表父类对象
访问父类方法:super.eat();
32、Object类:是所有类的父类。
33、多态:对象的多种形态(继承是实现多态的基础)
引用多态:
父类引用指向本类对象 Father f1=new Father();
父类引用指向子类对象 Father f2=new Son();
方法多态:
创建本类对象时,调用的方法为本类方法。
创建子类对象时,调用的方法为子类重写的方法或继承的方法。
34、抽象类abstract
public abstract class Father{
public abstract void eat();//抽象类没有方法体以分号结束
}
35、接口: