一、Java 原型数据有8种
1. 整型 int 32 位 4字节
2. 短整型 short 16位 2 字节
3. 长整型 long 64位 8字节
4. 浮点型 float 将double类型的值强制转换为float类型。可以加后缀f或F
5. 双精度 double java中所有浮点类型默认情况下都是double类型。
6. 字符类型 char
7. 布尔类型 Boolean
8. 字节 ~128-127 8 位 1字节 只有成员变量才能有默认值。 byte 、short 、int、long 类型的初始值是0; float、double 类型的初始值是0.0 char类型的初始值\u0000 Boolean 类型 初始值是false
Java用Unicode来表示字符串和字符;
二、引用类型(reference type) 用在对象上的,一个对象可以被多个引用所指向,但同一时刻,每个引用只能指向唯一的对象,如果一个对象被多个引用所指向,无论哪一个引用改变对象,都会影响所有引用。
1. String
2. 类 只有通过new 的才叫新建对象,其他的就是变量。 局部变量声明必须赋初值,成员变量可以不赋初值。 变量一定在声明后才能使用。 使用new在内存中的堆创建一块区域。
只有通过new 的才叫新建对象,其他的就是变量。 局部变量声明必须赋初值,成员变量可以不赋初值。 变量一定在声明后才能使用。 使用new在内存中的堆创建一块区域。
三、java中的方法参数传递,无论传递的是原生数据类型还是引用类型,统一值传递。 java没有传引用的方式。 什么类型的引用就只能指向什么类型的对象。 如果没有声明构造方法,java编译器会自动为类生成添加一个没有参数的构造方法, 如果声明了一个构造方法,则java编译器不会生成一个构造方法,这时要显示的声明没有参数的构造函数。
1. new关键字在生成对象是完成三件事。 为对象开辟内存空间, 调用累的构造方法, 将生成的对象的地址返回。
2. 方法重载overload 方法名相同,但方法参数不同,(参数个数不同,参数类型不同) 方法的返回值不能决定方法的重载。
3. 当前对象的引用(this);必须放在构造函数的第一行。super()调用特定的构造函数(方 法),这时java在不使用默认的机制,去寻找不带参数的够着函数。super()必须放在构造函数的第一行。 如果子类使用super()显示调用弗雷德某个构造方法,那么在执行的时候就会寻找与super()最对应的构造方法而不会再去寻找父类不带参数的构造方法。 注意:当生成子对象时,java默认首先调用父类的不带参数的构造方法。
4. 方法重写(override):又叫覆盖,子类与父类的方法,返回类型、方法名相同和参数相 同。 方法重载发生在统一各类内部的两个方法,方法覆盖发生在子类和父类之间。 使用super调用父类的普通方法。
5. object类是所有类的直接或间接的父类。
6. 多态是指子类和父类的关系。父类型引用指向子类的对象。虽然父类引用指向子类的对 象,但是父类只能调用父类自己拥有的方法和成员变量。父类调用子类的方法,这个方法必须在父类出现过。也就是在父类声明过。
7. 抽象类 abstract 用于实现多态的一种途径。通过抽象方法,在子类中有不同的具体实现, 成为多种形态。都是通过父类作为形参,具体实参用子类向上转型。 抽象类不能生成实例。也就说不能new出来一个实例。
8. 抽象方法
有声明无实现。就是说没有花括号{},但是有括号和分号; 注意:花括号是有实现的。 抽象方法需要定义在抽象类中的。如果某个类中包含了抽象方法,则这个类一定是一个抽象类。如果一个类是抽象类,那么这个类既可以包含抽象方法也可以包含具体的方法,哪怕全是具体的方法。无论何总情况,只要一个类是抽象类,那么这个类就不能实例化。
9.在子类继承父类(父类是抽象类),如果子类没有实现父类的抽象方法,则子类也是抽象类。
10. 接口(interface) 接口中的所有方法都是抽象方法。没有具体的实现,不能有花括号。不能带有主体。 接口中的方法,默认是abstract。可以省略abstract关键字。 接口的方法都是public的,而且接口中还可以定义成员变量。都是public,接口中的成员变量都是静态的,都是final的。Public 和static 和final的。 接口可以看着成一种更严格的抽象类,它里面没有任何的方法实现。
四、修饰符
1.static
静态变量和静态方法。这些变量和方法属于该类,而不是该类的任何实例对象。 对静态变量的访问可以通过类名.成员变量也可以适用对象类访问,但是建议使用类名来访问。任何该类对象改变静态成员变量时,要影响到其他的对象。 对静态方法的访问,也可以适用对象来访问,但是还是建议使用类名来访问。 静态方法是可以继承的,子类可以继承父类的静态方法,而不能重写父类的静态的方法。 静态方法只能继承,而不能重写它。子类的静态的方法也不能覆盖父类的静态方法。 静态的方法不能用于覆盖。同名的静态的方法是隐藏。当父类和子类有同名的静态方法时,要看引用的类型,如果是父类型的引用,则调用父类型的静态方法。如果是子类时则调用子类的静态方法。
2. final关键字,final可以修饰属性、方法、类。 当一个类被final所修饰时,表示这个类不能被继承。 当一个方法被final修饰时,表示这个方法不能被覆盖, 当一个属性被final修饰时,表示这个属性不能被修改。
3. 对于final类型的成员变量,一般来说有两种赋值方式; A 在声明final类型的成员变量时,就赋初值。(编译时赋值) B 在声明final类型的成员变量时不赋初值,待在类的所有构造方法中都为其赋上初值.
4. 静态代码块 跟方法是同一个层次上的。静态代码块,在虚拟机加载时就执行。 当有继承关系的静态代码块时,首先要执行的是执行父类的,再找子类的。再执行子类的。Static{},然后才去执行构造方法。要想调用某个类来生成对象,需要将类加载到java虚拟机上,然后有java虚拟机来生成对象。 静态代码块只执行一次,而构造方法中的代码,会由所生成对象的构造函数多次执行。 不能在静态代码块中使用this关键字。不能在静态方法中使用this关键字。