从Java5开始,Java开始定义可变长参数,就是允许在调用方法时传入不定长度的参数。比如下面的方法可以接受0个或者多个参数:
public static void method1(String ...args) { //TODO}
另外,可变长参数只能作为形参列表的最后一个参数。
public static void method2(String arg1, String ...args) { //TODO}
遇到方法重载的情况怎么办呢?会优先匹配固定参数还是可变参数的方法呢?
是会优先匹配固定参数的方法,因为固定参数的方法匹配度更高。另外,Java 的可变参数编译后实际会被转换成一个数组。
注释有哪几种?注释越多越好吗? 单行注释多行注释文档注释在我们编写代码的时候,如果代码量比较少,我们自己或者团队其他成员还可以很轻易地看懂代码,但是当项目结构一旦复杂起来,我们就需要用到注释了。注释并不会执行(编译器在编译代码之前会把代码中的所有注释抹掉,字节码中不保留注释),是我们程序员写给自己看的,注释是你的代码说明书,能够帮助看代码的人快速地理清代码之间的逻辑关系。因此,在写程序的时候随手加上注释是一个非常好的习惯。
《Clean Code》这本书明确指出:
代码的注释不是越详细越好。实际上好的代码本身就是注释,我们要尽量规范和美化自己的代码来减少不必要的注释。
若编程语言足够有表达力,就不需要注释,尽量通过代码来阐述。
举个例子:
去掉下面复杂的注释,只需要创建一个与注释所言同一事物的函数即可
// check to see if the employee is eligible for full benefitsif ((employee.flags & HOURLY_FLAG) && (employee.age > 65))
应替换为
if (employee.isEligibleForFullBenefits())
标识符和关键字的区别是什么?标识符就是我们编写程序时为程序、类、变量、方法等取的名字。但是有一些标识符,已经被Java赋予了特殊的含义,只能用于特殊的地方,这种特殊的标识符就是关键字。因此也可以说,关键字是特殊的标识符。
Java 中有哪些常见的关键字?Java语言提供了很多修饰符,主要分为以下两类:
访问修饰符非访问修饰符
其中非访问修饰符主要有:static、final、abstract、synchronized和volatile,非访问修饰符根据各自的特性来保证特定功能的实现。
Java中使用访问控制符来保护对类、变量、方法和构造方法的访问,访问控制修饰符对应的权限控制的大小情况为:public > protected > default(包访问权限) > private。
public : 对所有类可见
使用对象:类、接口、变量、方法
protected : 对同一包内的类和所有子类可见
使用对象:变量、方法。 注意:不能修饰类(外部类)
子类与基类在同一包中:被声明为 protected 的变量、方法和构造器能被同一个包中的任何其他类访问;子类与基类不在同一包中:在子类中,子类实例可以访问其从基类继承而来的 protected 方法,而不能访问基类实例的protected方法
default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符
使用对象:类、接口、变量、方法。
private : 在本类中可见
使用对象:变量、方法。 注意:不能修饰类(外部类)
自增自减运算符++和–运算符可以放在变量之前,也可以放在变量之后;当运算符放在变量之前时(前缀),先自增/减,再赋值;当运算符放在变量之后时(后缀),先赋值,再自增/减。例如,当 b = ++a 时,先自增(自己增加 1),再赋值(赋值给 b);当 b = a++ 时,先赋值(赋值给 b),再自增(自己增加 1)。也就是,++a 输出的是 a+1 的值,a++输出的是 a 值。用一句口诀就是:“符号在前就先加/减,符号在后就后加/减”
continue、break、return的区别continue:结束本次循环,直接进行下一次循环
break:在循环体类结束整个循环过程
return:用于跳出所在方法,结束该方法的运行