Java知识点简单汇总

java基础知识点

java的基础数值类型

  • byte -128~127
  • short 16位
  • int 32位
  • long 64位
  • float
  • double
  • char
  • boolean

java字符串相关

java new对象相关

  1.String A = "ABC";内存会去查找永久代(常量池) ,如果没有的话,在永久代中中开辟一块儿内存空间,把地址付给栈指针,如果已经有了"ABC"的内存,直接把地址赋给栈指针;
  2.而String str = new String("a");是根据"a"这个String对象再次构造一个String对象;在堆中从新new一块儿内存,把指针赋给栈,将新构造出来的String对象的引用赋给str。 因此 只要是new String(),则,栈中的地址都是指向最新的new出来的堆中的地址
  3.String s = new String("abc")实际上是"abc"本身就是文字池中的一个对象,在运行 new String()时,把文字池即pool中的字符串"abc"复制到堆中,并把这个对象的应用交给s,所以创建了两个String对象,一个在pool 中,一个在堆中。

StringBuilder和StringBuffer的区别

1.当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象
2.1)如果要操作少量的数据用 String;(2)多线程操作字符串缓冲区下操作大量数据 StringBuffer;(3)单线程操作字符串缓冲区下操作大量数据 StringBuilder。
3.stringbuffer直接通过synchronized 关键字来实现同步操作
4.stringbuilder ArrayIndexOutOfBoundsException异常 且计数不是原子操作。
5.扩容的逻辑就是new一个新的char数组,新的char数组的容量是原来char数组的两倍再加2,再通过System.arryCopy()函数将原数组的内容复制到新数组,最后将指针指向新的char数组。

Scanner

1.Scanner in = new Scanner(System.in); 
2.获取int?nextLine() 方法会以回车符作为截止,将回车符连同之前的所有字符都读取出来,然后将会车符丢掉,把读取的之前的所有字符组合成一个完整的字符串,交换给我们。nextInt() 方法也是以回车符作为截止,但是只读取回车符之前的所有字符,而回车符留在了消息队列中。next() 方法和nextInt方法一样,它们不读取回车符;但next()方法看到空格也截止,而nextLine只看到回车符才截止。
3.获取多个int?
4.获取字符串?
在输入12回车,则自动识别12赋值给a,而回车则为\n\r,识别为字符串,则自动赋值给s,而回车在控制台上又不显示,那么给我们的感觉则是,只输入了一个就直接停止输入了。
5. 获取一行?
String input = sc.nextLine();//获取用户输入
String[] strArr=input.split(" ");//将用户输入以字符串的形式保存到数组
int id= Integer.parseInt(strArr[0]);//用包装类里面的方法将相应的类型转化保存到变量中

Swich

switch 击穿问题
switch中代码相同的case是可以归并的,类似于在if-else的Boolean中使用"||"。

数组

引用大佬的
https://www.cnblogs.com/Jade-Liu18831/p/9595748.html
数组的内存空间分配
深入了解:https://www.jianshu.com/p/aa905c079332

对象

  • 对象和对象变量
    https://blog.csdn.net/bupa900318/article/details/80651736
  • 封装的优点
    1. 良好的封装能够减少耦合。
    2. 类内部的结构可以自由修改。
    3. 可以对成员变量进行更精确的控制。
    4. 隐藏信息,实现细节。
  • 基于类的访问权限
    Java有四种访问权限, 其中三种有访问权限修饰符,分别为private,public和protected,还有一种不 带任何修饰符。
    private: Java语言中对访问权限限制的最窄的修饰符,一般称之为“私有的”。被其修饰的类、属性以及方法只能被该类的对象访问,其子类不能访问,更不能允许跨包访问。
    default:即不加任何访问修饰符,通常称为“默认访问模式“。该模式下,只允许在同一个包中进行访问。默认的保护模式
    protect: 介于public 和 private 之间的一种访问修饰符,一般称之为“保护形”。被其修饰的类、属性以及方法只能被类本身的方法及子类访问,即使子类在不同的包中也可以访问。也就是说,希望包中的一个类被包之外的类继承重用时,就可以使用这个级别。一般应该慎用。(包中类被包外类继承重用)
    public: Java语言中访问限制最宽的修饰符,一般称之为“公共的”。被其修饰的类、属性以及方法不仅可以跨类访问,而且允许跨包(package)访问。。(跨包访问)
  • 方法参数
  • 按值传递
  • 类初始化
    在这里插入图片描述
  • 静态的非静态的
  • 类的设计技巧
  • 数据设计为私有的
  • 数据一定初始化–避免空指针的问题
  • 不要使用过多的基本类型
  • 不是所有的域都需要域访问器和域更改器
  • 职责过多的类进行分解
  • 类名和方法名变量名体现他的职责 意义
  • 抽象类和接口的区别
    相同点:位于继承的顶端,用于被其他类实现或继承;
    都不能直接实例化对象;都可以包含抽象方法,其子类都必须覆写这些抽象方法;
    区别:抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;接口只能包含抽象方法;
    一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥Java的单继承)
    抽象类是这个事物中应该具备的内容, 继承体系是一种 is…a关系
    接口是这个事物中的额外内容,继承体系是一种 like…a关系

继承

  • 方法签名是什么
    https://blog.csdn.net/liu_sisi/article/details/88368846
  • 方法重写
  • 方法重载
  • 多态
  • 动态绑定
  • 为啥重写了equals方法要重写hashcode方法
    采取重写hashcode方法,先进行hashcode比较,如果不同,那么就没必要在进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用;
  • 128陷阱
    https://blog.csdn.net/weixin_44407699/article/details/99712247

反射

https://www.jianshu.com/p/9be58ee20dee
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值