本文共 4242 字,大约阅读时间需要 14 分钟。
a | 类型 | 字节 | 范围 | 默认值 | 例子 |
---|---|---|---|---|---|
整数 | byte | 1 | (-128—127) | 0 | byte a = 100,byte b = -50 |
short | 2 | (-2^15—2^15-1) | 0 | short s = 10,short r = -20 | |
int | 4 | (-2^31—2^31-1) | 0 | int a = 10, int b = -20 | |
long | 8 | (-2^63—2^63-1) | 0L | long a = 10L,Long b = -20L | |
小数 | float | 4 | (-2^31—2^31-1) | 0.0f | float f1 = 234.5f |
double | 8 | (-2^63—2^63-1) | 0.0d | double d1 = 123.4 | |
字符 | char | 2 | (0—2^16-1) | ‘\u0000’ | char letter = ‘A’ |
布尔 | boolean | 1位 | {true,false} | false | boolean one = true |
注意:
1. Java使用16位的Unicode字符集 2. 转义序列符:\u 3.整数类型(byte/short/int/long)中,对于未声明数据类型的整形,其默认类型为int型。 4.在浮点类型(float/double)中,对于未声明数据类型的浮点型,默认为double型 5.如果没有初始化成员变量就开始使用,那么每个类型的成员变量都有一个默认的初始值
注意: 1) 引用说的土一点就是变量名和变量值是分开的,比如说Student s = new Student(),s就是个引用类型的变量,s这个名分配在栈空间里,但是s它指向的值在堆空间里 2) 基本传值传参传的是副本,修改后原值不变;引用传值传参穿的是地址,修改后原值改变 3) “==”作用在引用数据类型间,判断内存地址是否相等,想判断内容实体用equals; 4) 所有引用类型的默认值都是null 5) 一个引用变量可以用来引用与任何与之兼容的类型
注意:
a. boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换) b. byte型不能自动类型提升到char,char和short直接也不会发生自动类型提升(因为负数的问题) c. 当进行数学运算时,数据类型会自动发生提升到运算符左右之较大者 d. 不能把对象类型转换成不相关类的对象 e. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入 f. 强制转换的数据类型必须是兼容的
type var[] type[] va(首选)
数组名 = new 数组元素类型[数组元素个数] int[] arr; arr = new int[5];
a.静态初始化: int a[] = {1,2,3}; Date[] date = {new Date(2014,10,25), new Date(2014,10,26), new Date(2014,10,27)}; b.动态初始化: int[] arr = new int[3]; //数组定义 arr[0]=1; //数组初始化 arr[1]=2; arr[2]=3;
a) witch 语句中的变量类型可以是: byte、short、int 或者 char。从 Java SE 7 开始,switch 支持字符串类型了,同时 case 标签必须为字符串常量或字面量 b) switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号 c) case 语句中的值的数据类型必须与变量的数据类型相同,而且只能是常量或者字面常量 d) 当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行,直到 break 语句出现才会跳出 switch 语句 e) 没有break语句,switch语句会一直执行下去
7)属性、方法、构造方法和自由块都是类中的成员,在创建对象时,各成员的执行顺序如下:
(1)父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。 (2)子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。 (3)父类实例成员和实例初始化块,按在代码中出现的顺序依次执行。 (4)执行父类构造方法。 (5)子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。 (6)执行子类构造方法。
8)构造方法只能由new运算符调用
9)构造代码块和构造函数的区别
(1)构造代码块:是给所有的对象进行初始化,也就是说,所有的对象都会调用一个代码块。只要对象一建立。就会调用这个代码块。 (2)构造函数:是给与之对应的对象进行初始化。它具有针对性。
1)重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变
2)重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 3)重写方法不能抛出新的检查异常或者比被重写方法申明更加宽泛的异常 例如: 父类的一个方法申明了一个检查异常 IOException,但是在重写这个方法的时候不能抛出 Exception 异常,因为 Exception 是 IOException 的父类,只能抛出IOException 的子类异常 4) 参数列表、 返回类型,必须完全与被重写方法的相同 5) 访问权限不能比父类中被重写的方法的访问权限更低。例如:如果父类的一个方法被声明为public,那么在子类中重写该方法就不能声明为protected。 6) 父类的成员方法只能被它的子类重写 7) 声明为final的方法不能被重写 8) 声明为static的方法不能被重写,但是能够被再次声明 9) 子类和父类在同一个包中,那么子类可以重写父类所有方法,除了声明为private和final的方法 10)子类和父类不在同一个包中,那么子类只能够重写父类的声明为public和protected的非final方法。 11)构造方法不能被重写 12) 如果不能继承一个方法,则不能重写这个方法
1)重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同
2)每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表, 最常用的地方就是构造器的重载 3)被重载的方法必须改变参数列表(参数个数或类型或顺序不一样) 4)被重载的方法可以改变返回类型, 改变访问修饰符 5)被重载的方法可以声明新的或更广的检查异常 6)方法能够在同一个类中或者在一个子类中被重载 7)无法以返回值类型作为重载函数的区分标准
注:文章是经过参考其他的文章然后自己整理出来的,有可能是小部分参考,也有可能是大部分参考,但绝对不是直接转载,觉得侵权了我会删,我只是把这个用于自己的笔记,顺便整理下知识的同时,能帮到一部分人。 ps : 有错误的还望各位大佬指正,小弟不胜感激