java初始: 基本知识之数据类型

基本数据类型(4类8种)

Object
Number
Boolean布尔型_1bit
Character字符型_2 bytes
Integer整型
Float浮点型
Byte_8bit
Short_2 bytes
Integer_4 bytes
Long_ 8 bytes
float
double
false
true

基本引用类型

包装类

定义:将基本数据类型封装成一个类,包含属性和方法。
使用过程:自动拆箱+自动装箱
装箱:将基本数据类型转换成包装类
拆箱:将包装类转换成基本数据类型

  • Integer --> int : int i = Integer.intValue();
  • int – > Integer: Integer a = Integer.valueOf(10);
Integer i1 =100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2);    // true
System.out.println(i1==i2);		//flase
//解释
//Integer 新对象过程是调用.valueOf的方法,源码为:
public static Integer valueOf(int i) {
 if (i >= IntegerCache.low && i <= IntegerCache.high)
    return IntegerCache.cache[i + (-IntegerCache.low)];
 return new Integer(i);
 }
 //IntegerCache.low源码,即判断i的值是否在限定范围内
        static final int low = -128;
        static final int high;
        static final Integer cache[];
 //因i=100时<127,执行数组[]代码行,故两者定位相同,i1==i2;
 //当i=200时>127,执行new Integer(i),指向不同对象,故i3 != i4;

String(本质是字符数组/字符序列)

  • 字符串在比较的时候:
    ==:比较的是地址
    equals:比较的是具体的值
  • 用final修饰,不可被继承;
  • 用equals方法比较的是字符数组的每一个位置的值
  • 是不可变对象,但指的是数组地址不变,其内部值可通过后续学习“反射”知识点获取并变更;
String a ="a";
String b = "b";
String c = "c";
String d = a+b+c;
String e = "abc";
System.out.println(d==e)  //false 
d =  d.intern();
System.out.println(d==e)  //true
//jdk1.7版本后常量池位于堆中而非方法区中
//==号是否成立,主要是看String指向的是对象还是确切的字符串;
//e中常量池只有1个对象,但原d中常量池具有a\b\c及d 4个对象;
//String不可变指的是地址不可变(value[]数组的指向不可变),但数组内的值是可以变的。(学习“反射“后可以获取数组的值并变更)

可变字符串(以下两种api都相同):
StringBuffer(线程安全,Synchronized(同步): 加锁,但效率低) &
StringBuilder(线程不安全,但效率高)

硬性规定: 当有人占用当前资源时,另一用户无法操作;
(e.g.多人同时取款一张卡会导致金额超支)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值