您的位置:首页 > 编程语言 > Java开发

java小知识点2

2016-06-25 11:01 211 查看
类中引用类型没有赋初值的问题

情况1:类中引用类型默认为null。

public class test3 {
String s;
public static void main(String[] args)
{
test3 test=new test3();
System.out.println(test.s);//输出为null;
}
}
情况2:

public class test3 {
static String s;//若不为static不能在static的main方法中输出
public static void main(String[] args)
{
System.out.println(s);//输出为null;
}
}
情况3:前两种为类内实例域,默认为null;第三种情况为main方法中的局部变量,不初始化不能使用

public class test3 {
public static void main(String[] args)
{
String s;
System.out.println(s);//未初始化变量,不能输出
}
}


Try...catch...finally与直接throws的区别:try
catch是直接处理,处理完成之后程序继续往下执行,throws则是将异常抛给它的上一级处理,程序便不往下执行了(已验证)。本题的catch语句块里面,打印完1之后,又抛出了一个RuntimeException,程序并没有处理它,而是直接抛出,因此执行完finally语句块之后,程序终止了

public class ZeroTest {
public static void main(String[] args) {
try{
int i = 100 / 0;
System.out.print(i);
}catch(Exception e){
System.out.print(1);
throw new RuntimeException();
}finally{
System.out.print(2);
}
System.out.print(3);
}
}




运行时异常: 都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。

       运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。 
非运行时异常 (编译异常): 是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

java标识符规定:标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字 不能当作Java标识符。

关于对象序列化:

能够对对象进行传输的貌似只有ObjectOutputStream和ObjectInputStream这些以Object开头的流对象。

3、实现了Seriallizable接口的类对象才能被序列化。

4、transient 修饰的变量在对象串化的时侯并不会将所赋值的值保存到传中,串化的对象从磁盘读取出来仍然是null。声明为static和transient类型的成员数据不能被串行化。因为static代表类的状态, transient代表对象的临时数据。

5、这值得说下Volatile这个修饰符,它是针对多线程情况下出现的。当线程读取它修饰的变量时,都会强迫从主存中重新读取。

java多线程中的volatile:

Java 语言提供了一种稍弱的同步机制,即 volatile
变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的.

volatile 变量对所有线程是立即可见的,对 volatile 变量所有的写操作都能立即反应到

其他线程之中,换句话说:volatile 变量在各个线程中是一致的,所以基于 volatile 变量的运算是线程安全的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: