1)数据类型:
布尔型:boolean 1个字节(8位) 范围(true、false) 默认值(false)
字节型:byte 1个字节(8位) 范围(-128~127) 默认值((byte)0)
字符型: char 2个字节(16位) 范围(’\u0000’~’\uffff’) 默认值(’\u0000’)
短整型:short 2个字节(16位) 范围(-215~215-1) 默认值(short(0)) ]
整型:boolean 4个字节(32位) 范围(-231~231-1) 默认值(0)
长整型:long 8个字节(64位) 范围(-263~236-1) 默认值(0L)
单精度浮点型:float 4个字节(32位) 默认值(0.0F)
双精度浮点型:double 4个字节(32位) 默认值(0.0F)
2)标识符规则
1.(09)、(AZ)、(a~z)、下划线 ’ _ ’ 、美元符’
′
2.
首
字
母
必
须
(
字
母
∣
下
划
线
∣
美
元
符
' 2.首字母必须( 字母 | 下划线 | 美元符
′2.首字母必须(字母∣下划线∣美元符)
3.不能是(关键字 | 保留字)
4.区分大小写
2.常量:
1)布尔型常量(boolean) 值只有true和false (不能认为“非零或1”是true、“零值”是false)
2) 整型常量(int或long)(注意范围:超出就编译错误) 如果范围比较大 ,用long,数值+L
3)浮点型常量(float或double):1.0是double型常量、1是整型常量、1.0f才是float常量
4)字符型常量(char):(采用Unicode字节集编码方案),16位无符号整数、0~2^16-1
5)字符串常量(String):length()、charAt(index)
3.变量
1)宽转换(小范围转大范围)------直接转
2)窄转换(大范围转小范围)------强转
(重点看范围或位数) 如:都是32位 int x=1 x=(int)(x+2.0f)
byte和char之间转换,则byte先int ,int再转成char
若是byte、char、short之间进行运算,则是全部先“窄转宽”成int ,结果类型为int
若是和double之间运算,则是全部先“窄转宽”成double ,结果类型为double
4.运算符的优先级:(自己体会)
5.流程控制(if、else、switch、while、for)
遇到的笔试题:switch条件可以是String类型吗?java7以前,条件必须是int或能强制转换成int的,如byte、short、char、int等
不过java7以后可以是String;
6.数组的定义
int [ ]Array=new int[100]; -----在堆内存开辟100个存放int类型数据 默认值是0 | 栈中的Array–>堆中的这块空间
int [100];------错误,定义不能自定长度
二维数组:同理 int a[ ][ ]=new int[ 2][ 2];
注意:数组作为参数时,是址传参,只要传递首地址就可以;如a[10] 调用chuanchan(a) public void chuanchan(int a[])
7.构造方法规则
(1)方法名与类名相同
(2)不要声明返回类型
(3)不能被static final synchronized abstract native 修饰
注意:可以被重载 不能被重写(因为不能继承)
8.this引用
注意:static方法中不能使用this,因为static修饰的方法是一直存在、随时可以用的;this对象可能没创建
注意:子类构造方法中,第一条语句必须是super(…)或this(…)之一,且只能有一条,否则报错。若没有声明调用super(…)或this(…),编译程序自动插入一条
9.静态成员
(1)静态变量,可以直接类名访问,或者通过对象引用来访问
(2)静态方法,可以直接类名访问,或者通过对象引用来访问
(3)静态代码块,当java虚拟机加载类时,就会执行该代码块
静态变量:
1)静态变量,在内存占用一份备份,运行时java虚拟机只为静态变量分配一次内存,在加载类完成内存分配
2)实例变量,每创建一个实例,就为实例变量分配一次内存,实例变量可以有多个备份
静态方法:main()
1)方法里不能(直接)访问非静态成员;因为非静态的方法和变量,需要创建类的实例后才能使用
2)不能使用this或super
3)子类能(继承、重载)、隐藏父类的静态方法,(不能重写父类的静态方法),也不能把父类不是静态的方法重写成静态方法
10.内部类
1)外部类只能是pubilc 或 默认;内部类4种修饰符都可以
11.常见的包
java.awt.* java.lang.* java.sql.* java.util.*
12.重写
1)同名不同参
2)父类访问权限更严格(修饰符)
3)父类静态方法不能被重写
4)子类重写的方法不能比父类被重写的方法抛出的异常多
13.多态:重载+重写等
向上转型(不需要强转)------- 向下转型(需要强转)
1.有继承关系 2.子类重写父类方法 3.父类引用指向子类对象 3个条件就会自动动态绑定,从而实现多态
14.抽象类
(1)含抽象方法的类必须声明为抽象类,抽象类必须被继承,抽象方法必须被实现
(2)抽象类中可以申明并实现方法
(3)抽象类的子类必须实现父类所有抽象方法后才能实例化,否则这个子类也是抽象类
(4)抽象类不能实例化=没有构造函数
15抽象类
(1)常量默认(也只能)public static final
(2)抽象方法 默认(也只能)public abstract
(3)接口可以继承其他接口,并添加新的属性和方法
(4)允许接口多继承
(5)java8 允许在接口定义default方法,且default必须写,且不能使用static修饰,默认是public
16.final
(1)修饰类:不能被继承,没有子类
(2)修饰方法:不能被子类重写或隐藏
(3)修饰变量:只能被赋值一次,表常量
(4)父类中被private修饰的方法不能被重写,因此private方法默认是final
17.修饰符范围
本类 同包 子类 其他
public V V V V
protected V V V
默认 V V
private V
18.继承规则
(1)构造方法不能被继承
(2)private修饰的成员不能被继承
(3)默认成员(子类和父类同包可以继承,否则不能被继承)
(4)protected、public修饰成员总能被继承
(5)能被子类访问的成员,才会被继承
(6)能被子类继承的实例方法,才会被子类重写或重载
(7)能被子类继承static方法,才会被子类隐藏或重载
(8)能被子类继承数据成员,才会被子类隐藏
19.Object的常用方法
(1)boolean equals(Object o) 比内容
(2)hashCode() 比地址
(3)toString() 返回值是 类名+@+十六进制hashCode
20.String
(1)int length()
(2)char charAt(int index)
(3)int compareTo(String s) 按Unicode逐一比较两字符串的大小,如果源串小则返回小于0的值,相等-返回0,大于–返回大于0的值
(4)String concat(String str) 把字符串str加当当前字符串末尾
(5)equals(Object o)和equalsIgnoreCase(String str) 判断两个字符内容是否相同,或者不区分大小写
(6)int indexOf(int ch) 返回字符ch第一次出现的位置‘’
(7)String toUpperCase():将字符串转换大写
(8)String subString(int beginIndex)返回一个新字符串,从索引的位置往后
(9)String subString(int beginIndex,int endIndex)
(10)static String valueOf(参数) 把基本数据类型转换成String类型********
(12)String [ ] split(String regex)将字符串按自定的分隔符分隔,返回分隔后的字符串数组
21.StringBuffer(内容和长度可变)
(1)StringBuffer append(char s)向缓存内添加新字符
(2)StringBuffer insert(int offset,String str)在offset位置加入字符串str
(3)StringBuffer delete(int start,int end)删除start-end这一段字符串
(4)StringBuffer reverse(str) 逆序
String 与 StringBuffer不同
(1)String代表字符串常量,创建就不能更改(“abc”);StringBuffer代表可变字符序列,调用方法可以改变内容和长度
(2)String重写了Object继承的equals()方法,StringBuffer没有
(3)String对象可以使用 +连接,而StringBUffer不可以,只能append()
(4)String对象可以比较大小,StringBuffer不可以,必须转成String再比较
22.Math类(大多都是静态方法)
(1)abs()返回绝对值
(2)floor(double d)
(3)pow(double e,double w) 次幂
(4)random()返回随机大于等于0.0且小于等于1.0
(5)round(float/double a)返回最接近参数的int/long
(6)max(a,b)
(7)min(a,b)
23.面试中碰到的
class A{
int a;
public void sb(){
system.out.println(a);
}
}
class B{
public void sb(){
int a;
system.out.println(a);
}
}
是否都能编译运行?A是可以的,B不行
24.集合