Java 基础知识(三)之关键字
2016-05-12 11:23
323 查看
1. 变量命名规则
在Java中。变量名、函数名、数组名统称为标识符,Java语言规定标识符只能由字母、数字、下划线和$组成,并且标识符第一个字符必须为字母、下划线或$。此外,标识符也不能包含空白字符(换行符、空格和制表符)。2. break、continue和return的区别
1)break用于直接强行跳出当前循环。不再执行代码。当多层循环嵌套时,break只是跳出了内层循环;若要跳出多重循环,需在循环外面定义一个标识,然后在循环体中使用带有标识的break语句。2)continue用于停止当次循环,回到循环起始处,进入下一次循环操作。continue只是中断一次循环。
3)return语句是一个跳转语句,用来表示从一个方法返回(返回一个值或其他复杂类型),可以使程序控制返回调用该方法的地方。当执行main方法时,return语句可以使程序执行返回到Java运行系统。
3. final、finally和finalize的区别
1)final用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖和类不可被继承。publicclass Test{ publicstatic void main(String[] args){ finalStringBuffer s = new StringBuffer("Hello"); s.append("world"); s= new StringBuffer("Hello world"); //编译期间错误 } }
①final指的是引用的不可变性,即它只能指向初始时指向的那个对象,而不关心指向对象内容的变化。所以,被final修饰的变量必须被初始化。
②final方法:当一个方法声明为final时,该方法不允许任何子类重写这个方法,但子类仍然可以使用这个方法。
③final参数:用来表示这个参数在这个函数内部不允许被修改。
④final类:当一个类被声明为final时,此类不能被继承。
2) finally作为异常处理的一部分,它只能用在try/catch语句中,并且附带一个语句块,表示这段语句最终一定被执行,经常被用在需要释放资源的情况下。
3) finalize是Object类的一个方法,在垃圾回收器执行时会调用被回收对象的finalize()方法,可以覆盖此方法来实现对其他资源的回收,例如关闭文件等。需要注意的是,并不是立即回收。
4. assert
断言(assert)作为一种软件调试的方法,提供了一种在代码中进行正确性检查的机制,它的主要作用是对一个boolean表达式进行检查,一个正确运行的程序必须保证这个boolean表达式的值为true,若表达式的值为false,则说明程序已经处于一种不正确的状态下,系统需要提供告警信息并且退出程序。assert的主要应用范围:①检查控制流;②检查输入参数是否有效;③检查函数结果是否有效;④检查程序不变量。
5. static
static关键字主要有两种作用:第一,为某个特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。第二,实现某个方法或属性与类而不是对象关联在一起,即可通过类来直接调用方法或使用类的属性。static一个很重要的用途是实现单例模式。单例模式的特点是该类只能有一个实例,为了实现这以功能,必须隐藏类的构造函数,即把函数声明为private,,并提供一个创建对象的方法。
public classSingleton { private Singleton(){} private static Singleton instance = null; public static SingletongetInstance(){ if(instance == null){ instance = new Singleton(); } return instance; } }
6. switch
switch语句用于多分支选择,在使用switch(expr)时,expr)只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式,包括int和其包装类Integer,由于btye、short、char能隐式地转换为int,故这些类型及其包装类都可以作为switch的表达式。
在Java7中,switch开始支持String类型,从本质上讲,switch对字符串的支持,其实是int类型值的匹配。它的实现原理为对case的String对象调用hashCode()方法,得到一个int类型的hash值来唯一标识这个case。那么当匹配时,调用String.equals()进行匹配。
7. volatile
在用Java语言编写的程序中,有时为了提高程序的运行效率,编译器会自动把对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量时有可能会直接从缓存中来读取这个值,而不会去内存中读取。单线程时能提高程序的运行效率,但遇到多线程编程时,变量的值可能因为别的线程而改变,而该缓存的值不会相应改变。volatile是一个类型修饰符,它被设计用来修饰被不同线程访问和修改的变量。
注意:
由于volatile不能保证操作的原子性,因此,一般情况下volatile不能代替sychronized。此外,使用volatile会阻止编译器对代码的优化,因此会降低程序的执行效率。
8. instanceof
instanceof是Java中的一个二元运算符,它的作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,该运算符返回boolean类型的数据。9. strictfp
关键字strictfp是strict float point,指的是精确浮点,它用来确定浮点数运算的准确性。JVM在执行浮点数运算时,如果没有指定strictfp关键字,此时计算结果可能会不精确,而且计算结果在不同平台的虚拟机上会有不同的结果。注意:
当一个类被strictfp修饰时,所有方法都会自动被strictfp修饰。
参考文献:
《Java程序员面试笔试宝典》
相关文章推荐
- 详解Java异常Throwable、Error、Exception、RuntimeException的区别
- java 设计模式
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- Java编译后产生class文件的命名规则
- Java 查询当前日期和前后几天日期
- 【第七章】 对JDBC的支持 之 7.2 JDBC模板类 ——跟我学spring3
- Java并发编程:Callable、Future和FutureTask
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- Struts+Hibernate+Spring实现用户登录功能
- Java同步工具类总结
- Java同步工具类总结
- eclipse中文乱码怎么办
- Could not create the Java Virtual Machine
- 《JVM故障诊断指南》之3 —— Java 线程: JVM持有内存的分析
- java 读取数据库中表定义
- 《JVM故障诊断指南》之2 —— 调整合适的Java堆大小的技巧
- Java 实现HTML富文本导出至word完美解决方案
- Java线程池的几种实现方法及常见问题解答
- Javaweb学习之MVC
- Java实现常见的排序算法之快排(快速排序)