java基础笔记

java数据类型

基础数据类型:byte,short,int,long,float,double,boolen,char

引用类型:类,接口,数组

https://blog.csdn.net/sunshine543123/article/details/108865395

数组的拷贝不能用=,java是用引用来操作数组的,如果用等号赋值数组,然后对新数组的操作的操作也影响到原数组的数据,那是因为它们根本指向的是同一内存空间。
正确做法:
int[] b=a.clone();
使用for循环;
使用System类的arraycopy()方法; System.arraycopy(a, 0, b, 0, a.length);//(源数组,源数组开始下标,目标数组,目标数组下标,复制个数);
使用Arrays类的copyOf()方法和copyOfRange()方法: 1. int[] newArr=Arrays.copyOf(arr,5);//(源数组,长度) 2. int[] newArr=Arrays.copyOfRange(arr,2,6);//(源数组,开始下标,结束下标(不包括))

Java集合

https://blog.csdn.net/sunshine543123/article/details/109013943

JDK8的新版特性

https://blog.csdn.net/sunshine543123/article/details/109032452

java中==和equals的区别

(1)基础类型比较

使用 == 比较值是否相等。

(2)引用类型比较

重写了equals方法,比如String。
第一种情况:使用==比较的是String的引用是否指向了同一块内存 第二种情况:使用equals比较的是String的引用的对象内容是否相等。

没有重写equals方法,比如User等自定义类 ==和equals比较的都是引用是否指向了同一块内存。
怎样重写equals方法?
先比较引用是否相同,再比较类型是否相同,再看内容是否相同。

两个对象的 hashCode() 相同,则 equals() 也一定为 true,对吗?
不一定,不同的对象可能会有相同的哈希值

java中String、StringBuffer和StringBuilder的区别

https://www.jianshu.com/p/dcfcea438462

StringBuilder和StringBuffer的执行速度大于String(String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的。但后两者的对象是变量,是可以更改的,当发现长度不够的时候(默认长度是16),会自动进行扩容工作,扩展为原数组长度的2倍加2,创建一个新的数组,并将数组的数据复制到新数组。)
在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的,因为StringBuffer的相关方法都加了synchronized。

java常用IO流

https://www.cnblogs.com/cmt/p/14553189.html

java的泛型

泛型的作用:

使代码更加灵活。
加入反省后将类型不匹配的错误从运行期提前到了编译期。
能省去类型的强转。
泛型可以修饰方法(作为方法的参数或返回值);也可以修饰类,定义类的时候 class [类名]<范型定义>,多个方法可以直接使用;也可以修饰接口。

传入一个泛型对象,JVM会在编译后生成的字节码进行一个所谓的“范型擦除”。(擦除是在代码运行过程中将具体的类型都抹除。)

String最大容量

String底层是char数组, 最大长度就取决于数组长度. 数组长度为int类型, 实际最大可分配长度为Integer.MAX_VALUE(2^31-1)减2, 约2G, String最大长度就是这个值. 一个char占2字节, 占用内存约4G

jdk和jre有什么区别

JDK:java development kit (java开发工具)
JRE:java runtime environment (java运行时环境)

JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库(rt.jar)。

java反射

从类或对象中推导出Class类,然后再从Class类中获得类的信息。

定义: JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法,这种动态获取、调用对象方法的功能称为java语言的反射机制。

获取类的方法:

People p=new People();
//通过对象获取
Class c1=p.class;
Class c2=p.getClass();      
//通过forName获取
Class c2=Class.forName("com.xmr.java.People");

获取类的全部方法:
在这里插入图片描述
参考博客:https://blog.csdn.net/qsbbl/article/details/85801571

其它

深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。

字节与字符
字节(Byte)是计量单位,表示数据量多少,是计算机信息技术用于计量存储容量的一种计量单位,通常情况下一字节等于八位。
字符(Character)计算机中使用的字母、数字、字和符号,比如’A’、‘B’、‘$’、'&'等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值