开卷啦!!!卷卷卷,大家一起卷!!!
一、JVM内存分配
记一下,再记一下,忘了再记,记了再忘.......
二、System.arraycopy的使用方法
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src:源数组;
srcPos:源数组要复制的起始位置;
dest:目的数组;
destPos:目的数组放置的起始位置;
length:复制的长度.
原文链接:https://blog.csdn.net/wenzhi20102321/article/details/78444158
使用场景:复制拼接数组
三、类
一个类可以包含以下类型变量:
- 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
- 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
- 类变量:类变量也声明在类中,方法体之外,但必须声明为 static 类型。
每个类都有构造方法。如果没有显式地为类定义构造方法,Java 编译器将会为该类提供一个默认构造方法。
在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
局部变量和成员变量的区别:成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中,成员变量依附于对象而存在,比如car类中的车轮数、价格;局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效,比如for(int i;i<n;i++)中的i
四、Java 内部类
1.内部类语法格式:
2.访问内部类
通过创建外部类的对象,然后创建内部类的对象来实现。
嵌套类有两种类型:
- 非静态内部类
- 静态内部类
五、匿名内部类
匿名类是不能有名字的类,它们不能被引用,只能在创建时用 new 语句来声明它们。
匿名类语法格式:
六、Java的类库
Java常用类库(万字详解)_码农_小庄的博客-CSDN博客_java类库有多少个类
包名以java开始的包是Java核心包
包名以javac开始的包是Java扩展包
七、使用Math.random()方法实现指定范围的随机数
Math.random() 生成一个从0-1的伪随机数,不包含1
int random = (int)(Math.random() * 50 + 51); System.out.println(random)——生成51-100的随机数
八、I/O流
为什么输入流是读?——输入输出流是相对于内存而言的,程序运行在内存当中,文件保存在磁盘里面,如果读一个文件,从磁盘到内存当中,属于输入流。如果从程序中输出到文件中,便是内存写入到磁盘,是输出流。
flush()方法: 将缓冲区中的数据写入到源文件中。
当使用处理流时使用,因为节点流是直接与源文件所连接的,所以会直接将数据写入到源文件中。
当使用字符输出流时,一定要想到flush()方法。
使用处理流和字符流时候,使用
ObjectInputStream、ObjectOutputStream对象输入输出流:
需要被写入的对象必须实现Serializable序列化接口才能被序列化,并且可以通过idea工具生成一个serialVersionUID
九、序列化与反序列化(5W2H分析法)
java.io.Serializable(序列化)接口详细总结_GNG的博客-CSDN博客
- 什么是序列化?为了方便搬运的拆桌子和重装桌子的行为。
- 为什么需要序列化?(什么情况下用到序列化?)当你想把的内存中的对象状态保存到一个文件中或者数据库中,以便可以在以后重新创建精确的副本时,等等。
- 怎么序列化?继承接口Serializable即可。
十、transient修饰符
用来防止类中的变量被序列化,不能修饰方法和类;
静态变量无论是否被transient修饰,都不能序列化