暂无个人介绍
2022年03月
1,阅读字节码。2,验证字节码。3,将代码与库链接。
一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量的内容在序列化后将无法获得访问。 并且transient关键字只能用来修饰变量,而不能修饰方法和类。注意,本地变量是不可以被transient关键字修饰的。变量如果是用户自定义类变量的话,则该类需要实现Serializable接口。 被transient关键字修饰的变量不能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。
因为float放在内存中其实是当作double来处理的,它不会比double更节约内存资源,对应的double虚拟机会直接以double形式来进行处理,不仅快速而且精度高,但是如果用float,不但不会节约内存资源,虚拟机还会为了校验float的精度,去花费更多的系统资源,例如cpu时钟,程序执行步骤等等,所以,Java一定要用double。
枚举类型在编译器处理之后,会由一个final的继承Enum类的类实现。该类是一个实实在在存在的类。在该类当中,编译器还可以帮助我们生成每个枚举类型的实例对象,这些对象分别对应枚举中定义的每个枚举类型本身。
A:成员变量B:成员方法
通过Java语言编写的应用程序在不同的系统平台上都可以运行
所谓方法重载,指的是当两个方法具有相同的方法名称的时候,他们共存的一种方式。
编译型语言。如c/c++,他们通过编译器直接编译为exe可执行文件,然后在运行的时候就可以直接运行,而不需要解释,所以速度很快。 解释型语言。如java、JavaScript,java写完之后编译为class文件,然后这个文件是不能直接运行的,还需要再运行的时候边解释边运行,所以速度较慢。
基本类型: byte二进制位数: 8 包装类: java.lang.Byte 最大值: Byte.MIN_VALUE=-128 最小值: Byte.MAX_VALUE=127
基本类型: int二进制位数: 32 包装类: java.lang.Integer 最大值: Integer.MIN_VALUE=-2147483648 最小值: Integer.MAX_VALUE=2147483647
基本类型: char二进制位数: 16 包装类: java.lang.Character 最大值: Character.MIN_VALUE=0 最小值: Character.MAX_VALUE=65535
不可以对boolean类型进行类型转换。 不可以把对象类型转换为不想关类的对象。 在把容量大的类型转换为容量小的类型时,必须要使用强制类型转换。
sleep()来自Thread类,和wait()来自Object类。调用sleep()方法的过程中,线程不会释放对象锁。而是调用 wait 方法线程会释放对象锁 sleep()睡眠后不会出让系统资源,wait让其他线程时可以占用CPU sleep(milliseconds)需要指定一个睡眠时间,时间一到则会自动唤醒.而wait()可需要配合notify()或者notifyAll()使用
自旋锁,偏向锁,轻量级锁
Serializable 接口是一个序列化 Java 类的接口,方便它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是 JVM 内嵌的默认序列化方式,它成本较高、脆弱而且不安全。Externalizable 允许你可以控制整个序列化过程,指定特定的二进制格式,来增加安全机制。
抢占式。当一个线程用完CPU之后,操作系统就会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程来进行执行。
如果不是特别关心内存和性能的话,使用BigDecimal,否则使用预定义精度的 double 类型。
1,采用new2,通过反射3,采用clone4,通过序列化机制
静态变量存储在方法区,属于类所有。实例变量存储在堆当中,其引用存在当前线程栈
同步是用来解决多线程的安全问题的,在多线程中,同步可以控制对共享数据的访问。如果没有同步,当一个线程在修改一个共享数据时,而另一个线程正在使用或更新同一个共享数据,这样会容易导致程序出现错误的结果
首先,在方法的局部变量中找这个变量,有则使用。 否则,在本类中找成员变量,有则使用。 否则,在父类中找成员变量,有则使用。 否则,报错。
重载:在同一类中。方法名相同,参数列表不同。重载可以改变返回类型。 重写:在不同类中(子父类中)。