- 命名规范:骆驼命名法,类名所有单词的首字母全部大写,变量第二个单词开始所有首字母全部大写。
public class GetName { }
String firstName="Shen"
main
方法必须声明为public
,且该方法必须有一个外壳类。- 采用双引号分隔字符串。
- 注释的方法:
①//注释内容
②/*注释内容*/
③/**注释内容*/
:可自动生成文档。 - 判断一个变量是否是数值:
Float.isNaN()
和Double.isNaN()
,不可以使用x == Double.NaN
进行判断。 - 声明一个变量之后必须对变量进行显示初始化,不能使用未初始化的变量。
- 声明一个可以在同一个类中的多个方法中使用的常量,即类常量:
static final double CM_PER_INCH = 2.54;
,若需要使该常量可以被其它类中的方法调用,可以为该常量添加public
修饰符,类常量的定义位于main
方法的外部,使用final
定义常量,且常量通常大写。 - 判断两个字符串是否相等:
public boolean equals(Object anObject)
方法,当比较的标准为字符串字面量时,应将该字面量放在外侧,不能使用==
比较两个字符串是否相等,这个运算符只能确定两个字符串是否放置在同一个位置。
String greet = "Hello";
boolean result = "Hello".equals(greet);
String greet = "Hello";
System.out.println(greet.substring(0, 3) == "Hel");
/*false*/
- 检查一个字符串既不是
null
也不是空串:if (greet != null && greet.length() > 0)
- 大数值:处理包含任意长度数字序列的数值。
①BigInteger
:实现任意精度的整数运算。
②BigDecimal
:实现任意精度的浮点数运算。 - 输出数组:
int[] numArr = new int[10];
System.out.println(Arrays.toString(numArr));
/* [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] */
- 数组初始化:
int[] numArr = {1,2,3,4,5};
- 允许数组长度为
0
,int[] numArr = new int[0];
,数组长度为0
与null
不同。 - 数组拷贝:将一个数组拷贝给另一个数组变量,两个变量引用同一个数组。
方法:Arrays.copyOf(int[] original, int newLength)
示例:
int[] numArr = {1,2,3,4,5};
int[] newArr=Arrays.copyOf(numArr, numArr.length);
- 随机生成一个
0~n
的整数:int num = (int) (Math.random() * (n + 1));
生成一个指定范围[min,max]
内的数:int num = min + (int) (Math.random() * (max - min + 1));
- 静态方法是一种不能向对象实施操作的方法,静态方法可以访问自身类中的静态域,建议使用类名调用静态方法,而不是使用对象调用静态方法。静态方法只能访问静态变量,非静态方法可以访问静态和非静态的方法和变量。
- 每一个类可以有一个
main
方法,main
方法常用于对类进行单元测试,如果main
方法所属的类是一个更大型应用程序的一部分,就可以使用java Applicaiton
运行程序,类的main
方法将不会被执行。 - 方法参数的使用情况(采用按值调用):
① 一个方法不能修改一个基本数据类型的参数:方法得到的是参数的拷贝值,该值在内存中的位置与参数的位置不同,在方法对拷贝值的修改不会影响参数的值。
② 一个方法可以修改一个对象参数的状态:
public static void tripleSalary(Employee e){
e.raiseSalary(200);
}
Employee employee=new Employee();
tripleSalary(employee);
过程:e
被初始化为employee
值的拷贝,是一个对象的引用,e
和employee
是对同一个对象的应用,可以对employee
指向的引用的参数进行修改。
③ 一个方法不能让对象参数引用引用一个新的对象。
- 方法重载:多个方法有相同的名字,不同的参数(类型和数量不同),便产生了重载。
- 当类中提供了至少一个构造器,但是没有提供无参数的构造器,则在构造对象时如果没有提供参数就会被视为不合法,仅当类没有提供任何构造器方法时,系统才会提供一个默认的构造器。
- 所有的继承都是公有继承,子类的方法不能访问父类的私有域,子列可以增加域、方法或覆盖父类的方法,但是不能删除继承的任何域和方法。
- 子类构造器:使用
super
调用构造器的语句必须是子类构造器的第一条语句,如果子类的构造器没有显式的调用超类的构造器,则将自动调用超类的默认构造器,如果超类没有不带参数的构造器,并且在子类中没有显式的调用超类的其他构造器,则编译器将报告错误。
public Manager(String name,double salary,int year,int month,int day){
super(name,salary,year,day);
}
- 在覆盖一个方法时,子类方法不能低于超类方法的可见性。
final
类无法被继承,final
方法不能被子类覆盖,final
类中的所有方法自动认定为final
方法,域也可以被声明为final
,对于final
域而言,构造对象之后就不允许改变其值,但是如果一个类被声明为final
,只有其中的方法自动成为final
,而不包括域。- 接口中的所有方法自动属于
public
,接口中没有实例域,实现接口需要对接口中的所有方法进行定义。实现接口时,必须把方法显式地声明为public
,否则该方法地可见性为包可见性,低于接口声明中的可见性。 - 接口不是类,不能使用
new
运算符实例化一个接口,可以声明接口的变量,接口变量必须引用实现了接口的类对象,可以使用instanceof
检查一个对象是否实现了某个特定的接口,接口可以被继承,接口中不能包含实例域或静态方法,但是可以包含常量,接口中的域自动设为public static final
。 - 接口与抽象类:
相同点:接口和抽象类中的方法可以仅声明,不实现。
不同点:抽象类只能被继承,而一个类只能有一个父类;一个类可以同时实现多个接口。