Java知识点集合01--String、StringBuffer、StringBuilder区别&&==和equals区别&&封装类&装箱和拆箱

跨平台原理

JVM(Java Virtual Machine )Java虚拟机
JDK(Java Development Kit)Java开发工具包,JDK包含JRE,Javac编译器、还包含调试和分析工具、文档和demo例子程序。
JRE(Java Runtime Environment)Java运行时环境。包括Java基础类库、JVM
将源代码通过javac编译器编译成.二进制class字节码文件,在JVM上解释器解释成不同的机器码。不同的指令集。
跨平台:在不同的机器上安装不同的JVM,生成一样的.class字节码文件。(提供了统一的接口,开发者调用这些接口)

Java的开发环境

JDK、开发软件eclipse、web服务器(tomcat)

  1. 安装JDK,配置JAVA_HOME变量
  2. 安装Eclipse,设置workspace的默认编码
  3. 安装Tomcat
  4. SVM/Git

Int数据占几个字节

基本数据类型:byte(8),short(16),int(32),long(64),double(64),float(32),char(16),boolean(1)
int占4个字节,32位

booleanfalse
char‘/uoooo’(null)
byte(byte)0
short(short)0
int0
long0L
float0.0f
double0.0d

面向对象的特点

封装、抽象、继承、多态
封装:将对象分装成一个高度自治和相对封闭的个体。通过get/set方法来改变属性
抽象:将事物抽象为一个类
继承:继承原先的类,可以在子类中添加修改方法。
多态:程序运行时动态绑定,引用变量指向实例对象

封装类&装箱和拆箱

boolean—>Boolean
int—>Integer
double—>Double
float—>Float
char---->Character
short—>Short
long—>Long
byte—>Byte

  • 自动装箱:把基本数据类型转换成封装类,编译调用valueOf
  • 手动装箱:调用Integer.valueOf(1)
  • 自动拆箱:把封装类转换成基本数据类型,编译调用XXXValue()
Integer i = Integer.valueOf(1);
int x = i;//自动拆箱,int x = i.intValue();手动拆箱

自动装箱的缓存问题:超出缓存范围[-128,127],从堆内存中饭new一个新的对象返回。Integer缓存范围可以设置。(java.lang.Integer.IntegerCache.high=10000)

  • Boolean就两个缓存值TRUE,FALSE
  • Byte占1个字节,表示范围是[-128,127], 因为范围不大,所以全部256个值都是缓存的
  • Short, Long缓存范围是[-128,127],而且不可更改. 也无法通过extends方式扩展,因为这两个类是final的
  • Float,Double没有缓存,每次valueOf(1.0)都是返回一个堆中的新对象
    封装类可判断是否为空。

==和equals区别

基本数据类型直接比较值,引用类型比较引用内存的首地址。
==比较对象的引用地址(栈中的内容)。equals比较堆中内容是否相同,调用对象的equals方法

Integer b1 =new Integer (1);
 Integer b2 =new Integer (1);
 b1==b2 //false
 bi.equals(b2) == true //true
  String s1 = "Monday";
String s2 = "Monday";
s1==s1 //true,因为s1,s2的值均存放在常量池中,s1,s1在栈中存放常量池中位置相同

HashMap

通过object传入的hashcode在内存中keay地址,再通过equals判断内容是否一样。

String和StringBuffer、StringBuilder区别

  • String:内容不可变的字符串,因为String底层使用不可变的字符数组(final char[])。
  • StringBuilder和StringBuffer内容可变, StringBuilder和StringBuffer底层使用可变的字符数组(没有使用final)。。通过append来追加,数组拷贝(Arrays.copyOf(value,newCapacity)
  • StringBuilder和StringBuffer区别:StringBuffer是线程安全,效率较低,StringBuilder是线程不安全,效率较高
拼接字符串
  1. String c = “a” + “b”;
  2. StringBuilder sb = new StringBuilder();sb.append(“a”).append(“b”);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值