3 关键字
3.1 命名规则
项目名的命名:全部小写
包的命名:全部小写
Java包的名字都是由小写单词组成。但是由于Java面向对象编程的特性,每一名Java程序员都可以编写属于自己的Java包,为了保障每个Java包命名的唯一性,在最新的Java编程规范中,要求程序员在自己定义的包的名称之前加上唯一的前缀。由于互联网上的域名称是不会重复的,所以程序员一般采用自己在互联网上的域名称作为自己程序包的唯一前缀。
例如:net.frontfree.javagroup
类的命名:类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写
根据约定,Java类名通常以大写字母开头,如果类名称由多个单词组成,则每个单词的首字母均应为大写例如TestPage;如果类名称中包含单词缩写,则这个所写词的每个字母均应大写,如:XMLExample,还有一点命名技巧就是由于类是设计用来代表对象的,所以在命名类时应尽量选择名词。
例如:Graphics,MyFirstClass
方法的命名:首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写
例如:myGame
变量的命名规范有以下三种:
1)Camel标记法: 首字母是小写的,接下来的单词都以大写字母开头
2)Pascal标记法: 首字母是大写的,接下来的单词都以大写字母开头
3)匈牙利标记法: 在以Pascal标记法的变量前附加小写序列说明该变量的类型
变量名、函数名、数组名统称为标识符,Java语言中规定标识符只能够由字母(a ~ z || A ~ Z)、数字(0 ~ 9)、下划线( _ )和美元符( $ )组成,并且标识符的第一个字符必须是字母、下划线或$。此外,标识符不能包含空白字符(换行符、空格和制表符)。
常量的命名:全部大写,常加下划线
常量的名字应该都使用大写字母,并且指出该常量完整含义。如果一个常量名称由多个单词组成,则应该用下划线来分割这些单词。
例如:MAX_VALUE
参数的命名:首字母小写,如果名称由多个单词组成,每个单词的首字母都要大写
参数的命名规范和方法的命名规范相同,而且为了避免阅读程序时造成迷惑,请在尽量保证参数名称为一个单词的情况下使参数的命名尽可能明确。
3.2 break、continue以及return有什么区别
3.2.1 break
break用于直接强行跳出当前循环,不再执行剩余代码。当循环中遇到break语句时,忽略循环体中任何其他语句和循环条件测试。当break语句出现在嵌套循环中的内层循环时,它仅仅终止了内层循环执行,,外层循环会继续执行。
break能跳出当前循环,也可以跳出多重循环。在多重循环外面定义一个标识,然后在循环体内使用带标识的break语句就可以跳出多重循环。
例:
public class Main {
public static void main(String[] args) {
STOP:
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 4; j++) {
if (j >= 3)
break STOP;
System.out.println(j);
}
}
System.out.println("i");
}
}
结果:
0
1,
2
i
注:跳出多重循环有三种常用方式,自行了解
1)使用带有标号的的break语句
2)外层的循环条件收到内层的代码控制限制
3)使用try/catch强制跳出循环
3.2.2 continue
continue用于停止当此循环,回到循环起始处,执行下一次循环。continue语句后的语句将不再执行,用于跳过循环体中一部分语句,而不是跳过整个循环执行下一条语句。
例:
public class Main {
public static void main(String[] args) {
int result = 0;
for (int i = 1; i <= 100; i++) {
if (i > 50 && i <= 60) continue;
result += i;
}
System.out.println(result);
}
}
结果:
4495
分析:
程序计算了 1+2+3+……+48+49+50+61+62+63+……+100 的结果,仅仅没有对 i = 51,52……60 进行循环。
3.2.3 return
return是一个跳转语句,用来表示从一个方法返回一个值或其他复杂的类型,可以使程序返回到调用该方法的地方。当执行main方法时,return语句可以使程序执行返回到Java运行系统。
return结束循环 例:
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("当前i的值" + i);
if (i == 2) {
return; //直接结束main()方法
}
}
}
}
结果:
当前i的值0
当前i的值1
当前i的值2
3.3 final、finally以及finalize有什么区别
3.3.1 final
用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承
final修饰属性:被final修饰的变量不可变。
由于不可变有两重含义:一是引用不可变;二是对象不可变,final指的是引用不可变。即它只能指向初始时指向的那个对象,而不关心指向对象内容的变化。所以,被final修饰的变量必须被初始化。
一般可以通过以下几种方式初始化:在定义的时候初始化;
final成员变量可以在初始化块中初始化,但不可以在静态初始化块中初始化;
静态final成员变量可以在静态初始化块中初始化,但不可以在初始化块中初始化;
在类的构造器中初始化,但静态final成员变量不可在构造函数中初始化。
final修饰方法:当一个方法声明为final时,该方法不允许任何子类重写这个方法,但子类仍然可以使用这个方法。
另外,还有一种被称为inline(内联)的机制,当调用一个被声明为final的方法时,直接将方法主体插入到调用处,而不是进行方法调用,这样做能提高程序的效率
final修饰参数:用来表示这个参数在这个函数内部不允许被修改
final修饰类:当一个类被声明为final时,此类不能被继承,所有方法都不能被重写。
但这并不表示final类的成员变量也是不可改变的,必须给成员变量增加final修饰。
注:一个类不能既被声明为abstract,又被声明为final
3.3.2 finally
作为异常处理的部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定被执行,经常被用在需要释放资源的情况下
3.3.3 finalize
是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等。需要注意的是,一旦垃圾回收器准备好释放对象占用的空间,将首先调用其finalize()方法,并且在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
3.4 assert有什么用
断言(assert)是一种软件调试的方法。
主要作用:对一个boolean表达式进行检查,一个正确运行的程序必须保证boolean表达式的值为true,若boolean表达式的值为false,说明程序已经处于不正常状态,系统需要提供警告信息并退出程序。
assert的两种表达式:
1)assert expression1:
2)assert expression1:expression2
其中expression1表达一个boolean表达式,expression2标识一个基本类型或者一个对象。
例:
public class Main {
public static void main(String[] args) {
assert 1 + 1 == 2;
System.out.println("assert1 ok");
assert 1 + 2 == 3 : "assert faild,exit";
System.out.println("assert2 ok");
}
}
结果:
assert1 ok
assert2 ok
assert的应用范围:
1)检查控制流
2)检查输入参数是否有效
3)检查函数结果是否有效
4)检查程序不变量。
3.5 static关键字有哪些作用
等深入了解后再更新
3.6 使用switch有哪些注意事项
等深入了解后再更新
3.7 volatile有什么作用
还未接触到,等以后接触到了再更新
3.8 instanceof有什么作用
还未接触到,等以后接触到了再更新
3.9 strictfp有什么作用
还未接触到,等以后接触到了再更新
注:
此文来源于《Java程序员面试笔试宝典》一书
仅作为本人学习过程的记录
填写原创是因为找不到相关链接
如有不妥请联系本人,会立即删除
此书对于我这种小白来说非常有用,讲解详细,知识点全面,目前正在根据此书学习,陆续会记录更多知识点。