【20221012——学习记录】JVM内存分配、System.arraycopy、类、Java 内部类、匿名内部类、Java的类库、I/O流、Math.random()、序列化与反序列化

发布于:2022-11-27 ⋅ 阅读:(366) ⋅ 点赞:(0)

开卷啦!!!卷卷卷,大家一起卷!!!

一、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博客

  1. 什么是序列化?为了方便搬运的拆桌子和重装桌子的行为。
  2. 为什么需要序列化?(什么情况下用到序列化?)当你想把的内存中的对象状态保存到一个文件中或者数据库中,以便可以在以后重新创建精确的副本时,等等。
  3. 怎么序列化?继承接口Serializable即可。

十、transient修饰符

用来防止类中的变量被序列化,不能修饰方法和类;

静态变量无论是否被transient修饰,都不能序列化


网站公告

今日签到

点亮在社区的每一天
去签到