java基础知识点

  1. Java中数组复制的方式有那些?
	// 1.1 使用Arrays.copyOf复制完整的数组,并且返回一个新数组
	int source [] = {1,2,3,6} // 源数组
 	Arrays.copyOf(source [],source .length);
 	// 实现数组的动态扩容一倍
 	Arrays.copyOf(source [],source .length*2);
	Arrays.copyOf("源数组",复制的长度)
	// 1.2 使用Arrays.copyOfRange复制指定位置数组,并且返回新数组,
	Arrays.copyOfRange(source , int from, int to) 
	Arrays.copyOf("源数组""起始位置(下标)","结束位置(下标)") //特别注意 复制不包括 结束位置的下标数据
	// 1.3 把源数组中的数据复制到一个新的数组中,可以设置源数组开始下标和后继数组的指定位置开始位置,总共复制长度,
	int [] target = {};
	System.arraycopy(source, int srcPos, target, int destPos, int length) 
	System.arraycopy("源数组""目标数组起始位置(下标)","后继数组","后继数组起始位置","复制长度")

如果复制的数组中是基本数据类型,则复制的是数据值。
如果复制的数组中是引用对象类型,则只复制外层的对象,这时会导致如果源数组改变后,复制过的新数组也会同步的改变。【称为 浅层复制】
如果不仅复制外层容器,还复制容器里面的所有元素【称为 深层复制】
在这里插入图片描述
2.初探JVM?
JVM虚拟机内存划分
程序计数器:供CPU使用
本地方法栈:JVM使用操作系统功能时使用
方法区:存储可运行的.class文件、常量、静态变量、类信息
堆内存:存储对象、数组、所有new来创建的 【数组就算不用new也会直接存放在堆中】
Java栈:也称虚拟机栈,方法运行时使用的内存,比如 main方法运行,进入java栈中执行,并且它可以存储变量的局部变量表结构【String 类型的变量会在java栈中存放变量名称,把内容存放在java堆中】
2. 基本数据类型存储如下:
在这里插入图片描述
3.main方法在JVM中运行信息?
在这里插入图片描述
4.抽象类、接口 区别是什么?
接口是特殊的抽象类
抽象类:被abstract修饰的类为抽象类,被abstract修饰的方法为抽象方法、
抽象类中可以有抽象方法也可以有非抽象方法、
抽象方法不能有方法体、
抽象类不能直接new()【因为抽象类没有方法体,如果直接new没有任何意义】
子类是实现类的时候继承了父抽象类,
必须重写所有的抽象方法、
抽象类也可以有构造函数、
接口: 接口中的所有成员变量都是常量,默认是省略 public static final 关键字,必须赋值
在jdk1.7之前,接口中所有的成员方法都是抽象方法,默认省略了 public abstract 关键字(静态方法默认省略 public),在jdk1.8引入了默认方法 被default修饰的方法可以有方法体【可以直接通过接口实现类直接“.”默认方法名来调用】,在jdk1.9引入了私有方法
不能直接new创建对象,通过implements实现接口,必须重写接口中所有抽象方法
5.static修饰符的作用? 被static修饰的为共享资源
修饰资源:成员变量、成员方法、内部类、静态代码块
被修饰的资源如何访问:成员属性和方法 通过 类名“.”资源名 来访问。
被修饰的静态代码块资源:静态代码块会在静态变量初始化后执行。
被修饰的静态内部类资源:通过类名“.”内部类的类名“.”内部类方法调用
非static修饰的资源不能引用被static修饰的资源*(原因:static会过早加载,这时非static修饰的资源可能还没有被定义)*
静态方法中不能使用 super和this关键字,(原因:静态资源不属于当前对象的资源,所以无法使用)
静态方法不能重写,不具备多态,属于静态绑定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值