本文共 3201 字,大约阅读时间需要 10 分钟。
boolean 1字节
byte 1字节 short 2字节 char 2字节 int 4字节 float 4字节 double 8字节 long 8字节byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6;
当 short、byte、char在进行运算时,会自动转化成int类型。 因此 b3=b1+b2
,编译出错,因为会先将b1、b2这两个byte类型的变量转化成int类型运算,赋给b4时要强转成int才行: b3=(byte)(b1+b2)
。其他变量在进行运算时遵循以下优先级:
b4+b5
的结果还是byte类型。 常量+非常量时,比如b1+b4
,b1、b4都会转化成int再运算。 InputStream in=new FileInputStream( ... );//1code that might throw exception//2}catch(IOException e){ //3show error message//4}finally{ //5in.close();
在上面这段代码中,有下列 3 种情况会执行finally子句:
1)代码没有抛出异常。 (不管是否有异常被捕获,finally子句中的代码都被执行。) 在这种情况下,程序首先执行try
语句块种的全部代码,然后执行 finally
子句中的代码。随后,继续执行 try
语句块之后的第一条语句。 1、2、5、6。 2)抛出一个在catch
子句中捕获的异常。
IOException
。在这种情况下,程序将执行try语句块中的所有代码,直到发生异常为止。此时,将跳过try
语句块中的剩余代码,转去执行与该异常匹配的catch
子句中的代码,最后执行finally
子句中的代码。 如果catch
子句没有抛出异常,程序将执行try
语句块之后的第一条语句: 1、3、4、5、6。 如果catch
子句有抛出异常,异常将会被抛回到这个方法的调用者。 1、3、5。 ( 当代码抛出一个异常时,就会终止方法中剩余代码的处理,并退出这个方法的执行。) 所以不执行6。 3)代码抛出了一个异常,但这个异常不是由catch
块捕获的。
try
语句块中的所有语句,直到有异常被抛出为止。此时,将跳过 try
语句块中的剩余代码,然后执行 finally
子句中的语句,并将异常抛给这个方法的调用者。 1、5。 在方法体声明 throws
,在该方法出现异常时,会向调用处抛出该异常,即new 异常对象,在控制台打印异常信息( 包括异常的类型和堆栈的内容 ),而后该方法会终止执行,不能继续向下执行了。
虚拟机中的堆、栈
(1) 堆: JVM所管理的内存中最大的一块。 被所有线程共享,在JVM启动时创建. 所有对象实例和数组都要在堆上分配内存。 方法区: ”非堆“。 存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后代码。 (2) 虚拟机栈: Java方法执行的内存模型。 每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态链接、方法出口等,方法从调用到执行完成的过程,对应一个栈帧从虚拟机中入栈到出栈的过程。 本地方法栈: 本地方法… …抽象方法:
”抽象方法充当着占位的角色,它们的具体实现在子类中。“ 而final修饰的方法不能被覆写。所以final和abstract不能同时修饰一个方法。(抽象类不能被实例化。)
2020.02.07
public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+initialCapacity); } }
CallableStatement–>(继承于)PreparedStatement–>Statement–>Wrapper。
List、Set都是接口。
HashSet继承于AbsractSet。 WeakHashMap继承于AbstractMap 。标识符由数字、字母、_、$组成。不能包含关键字(小写)。
主方法中的 String 类型的 args 数组是专门用来接收命令行参数的。
System.out.print(args.length);
(未通过命令行传入参数时)运行结果为 0。 public class f{ public static void main(String[] args){ for(int i=0;i<3;i++)System.out.print(args[i]+" ");}}
对于上述的类 f 如果在 javac 编译后,运行时传入 a b c参数,java f a b c
,结果如下:
public class f{ public static void main(String[] args){ String foo1=args[1];String foo2=args[2];String foo3=args[3];} }
同样是编译后运行java f a b c
:
(类方法中不能出现 this )
-♥ Object类常见方法:
clone() equals() finalize()【在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。】 hasCode() toString() wait() notify() /notifyAll()
-♥ " && " 是短路与
"||"是短路或。
接口可以用 public abstract 修饰。
(可以理解成:接口是特殊的抽象类。) 接口中的方法默认是 public abstract ,jdk 1.8之后允许 default (真的写上去) 、static修饰方法。 接口中的变量默认是public static final,需要初始化。♥JRE判断程序是否执行结束的标准是:
所有的前台线程执行完毕。 前台线程——用户线程。 后台线程——守护线程。转载地址:http://hdjh.baihongyu.com/