Java基础【之】8种基本数据类型、引用类型、变量的使用

1.数据类型

  • Java语言是强类型编程语言,所有数据都必须具有明确的数据类型,先声明后使用
  • 每种数据类型初始化时,在内存空间的占用大小是不同的

1.1.基本数据类型

整数类型(byte、short、int、long)

  • 数据存储
    以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位
    一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位 。
  • bit: 计算机中的最小存储单位。
  • byte:计算机中基本存储单元。
  • 换算:1EB=1024PB、1PB=1024TB、1TB=1024GB、1GB=1024MB 、1MB=1024KB 、1KB=1024B、 1B=8bit
  • byte ~ 1 字节
  • short ~ 2 字节
  • int ~ 4 字节
  • long ~ 8 字节
    public static void main(String[] args) {
        
        //-128 ~ 127        
        System.out.println("byte 表示范围:" + Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
        
        //-32768 ~ 32767        
        System.out.println("short 表示范围:" + Short.MIN_VALUE + " ~ " + Short.MAX_VALUE);
        
        //-2147483648 ~ 2147483647        
        System.out.println("int 表示范围:" + Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
        
        //-9223372036854775808 ~ 9223372036854775807        
        System.out.println("long 表示范围:" + Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
    }

浮点类型(float、double)

  • 浮点型常量有两种表示形式:
    十进制:3.14 、3.1f
    科学计数法:3.14e2 、10E1 、10E2 、 10E-2

  • float:单精度,尾数可以精确到7位有效数字。
    单精度float 4字节 -3.403E38 ~ 3.403E38

  • double:双精度,精度是float的两倍。通常采用此类型。
    双精度double 8字节 -1.798E308 ~ 1.798E308

  • 浮点型常量默认为double型,声明float型常量,须后加‘f’或‘F’。

    public static void main(String[] args) {
        //10.0
        System.out.println(10F);
        System.out.println(10.0F);
        System.out.println(10E0);

        //100.0
        System.out.println(10E1);

        //98.0
        System.out.println(10E1 - 2);

        //1000.0
        System.out.println(10E2);

        //float 表示范围:1.4E-45 ~ 3.4028235E38
        System.out.println("float 表示范围:" + Float.MIN_VALUE + " ~ " + Float.MAX_VALUE);
        
        //double 表示范围:4.9E-324 ~ 1.7976931348623157E308
        System.out.println("double 表示范围:" + Double.MIN_VALUE + " ~ " + Double.MAX_VALUE);
        
    }

编码(ASCII、Unicode、UTF-8)

  • ASCII 码
    在计算机内部,所有数据都使用二进制表示。
    每一个二进制位(bit)有 0 和 1 两种状态,8 个二进制位就可以组合出 256 种状态.从0000000 到 11111111。
    上个世纪60年代,美国制定了一套字符编码,规定了128个字符的编码,。只占用了一个字节的后面7位,最前面的1位统一规定为0。
    比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)
  • Unicode 码
    每个符号用三个或四个字节表示,将世界上所有的符号都纳入其中。
    每一个符号都给予一个独一无二的编码,使用 Unicode 没有乱码的问题。
  • UTF-8 码
    UTF-8 是 Unicode 编码的一种实现方式。
    使用 1~6 个字表示一个符号,根据不同的符号而变化字节长度。

字符类型(char)

  • 字符类型占用 2字节
  • 定义形式:用单引号括起来
  • 特殊转义字符:用反斜线声明
			//---------------
			//ab退格:【b】
			//---------------
			//ab换行:【a
			//b】
			//---------------
			//b】
			//---------------
			//ab制表:【a	b】
			//---------------
			//ab双引号:【a"b】
			//---------------
			//ab单引号:【a'b】
			//---------------
			//反斜线:【ab=>a\b】
			//---------------
 
  public static void main(String[] args) {
        char a = 'a';
        char b = 'b';
        
        //特殊转义字符,用反斜线声明
		char _n = '\n';
		
        System.out.println("---------------");
        System.out.println("ab退格:【" + a + "\b" + b + "】");
        System.out.println("---------------");

        System.out.println("ab换行:【" + a + "\n" + b + "】");
        System.out.println("---------------");

        System.out.println("ab回车:【" + a + "\r" + b + "】");
        System.out.println("---------------");

        System.out.println("ab制表:【" + a + "\t" + b + "】");
        System.out.println("---------------");

        System.out.println("ab双引号:【" + a + "\"" + b + "】");
        System.out.println("---------------");

        System.out.println("ab单引号:【" + a + "\'" + b + "】");
        System.out.println("---------------");

        System.out.println("反斜线:【ab=>" + a + "\\" + b + "】");
        System.out.println("---------------");

    }

布尔类型(boolean)

  • 布尔类型:boolean,用来判断逻辑条件
  • boolean类型只存在2个值:true、false
    在编译后的字节码中:用1表示true,用0表示false。

    @SneakyThrows
    public static void main(String[] args) {
    
        boolean mark = true;
		boolean mark2 = false;

        if (mark) {
            System.out.println("001---true");
        }

        while (mark) {
            System.out.println("002---true");

            Thread.sleep(1000);
        }

        do {
            System.out.println("003---true");
            Thread.sleep(1000);
        } while (mark);

    }

1.2.引用类型(class、interace、[])

  • 类(class)
  • 接口(interace)
  • 数组([])
//类
class TestClass {
}

//接口
interface TestInterface {
    //接口函数
    void aaa();
}

public class Main {
    public static String a = "a";
    public static String[] arrayA = new String[]{"1", "2", "3"};

    public static int b = 10;
    public static int[] arrayB = new int[]{1, 2, 3, 4, 5};

  
    public static void main(String[] args) {
        TestClass testClass = new TestClass();

        TestInterface testInterface = new TestInterface() {
            @Override
            public void aaa() {

            }
        };
        
        //基本数据类型,默认输出值
        System.out.println(a);        //a
        System.out.println(b);        //10

        //引用数据类型,默认打印的是引用地址
        System.out.println(arrayA);//[Ljava.lang.String;@74a14482
        System.out.println(arrayB);//[I@1540e19d
        System.out.println(testClass);//com.abl.javabasis._04_type.TestClass@677327b6
        System.out.println(testInterface);//com.abl.javabasis._04_type.Main$1@14ae5a5
    }

}

1.3.自动类型转换

  • 自动类型转换:容量小的类型自动转换为容量大的数据类型。
    从小到大排序为:(byte char short)、int、long、float、double
    出现多种类型的数据混合运算时,自动将数据转换成容量最大的那种数据类型,然后进行计算。
  • 注意:
    1.byte、short、char之间不会相互转换,在计算时首先会被转换为int类型。
    2.boolean 类型不能参与运算。
    3.任何基本数据类型和字符串进行连接运算时,值将自动转化为字符串类型。

    public static void main(String[] args) {
        // 1.byte、short、char 之间不会相互转换,在计算时首先会被转换为int类型。
        byte byte_ = 0;
        short short_ = 1;
        char char_1 = 'a';
        char char_2 = 'z';

        System.out.println(byte_);//0
        System.out.println(short_);//1
        System.out.println(char_1);//a
        System.out.println(char_2);//z

        System.out.println(char_1 + short_); //98
        System.out.println(byte_ + char_2); //122
        System.out.println(char_1 + char_2); //219
       
        // 2.boolean 类型不能参与运算。
        // 3.任何基本数据类型和字符串进行连接运算时,值将自动转化为字符串类型。
        String str = "String";
        System.out.println(str+byte_); //String0
        System.out.println(str+short_); //String1
        System.out.println(str+char_1); //Stringa
        System.out.println(str+char_2); //Stringz
    }
    

1.4.强制类型转换

  • 情况1:将大容量数据类型,转换为小容量数据类型时,会丢失精度。
  • 情况2:将不同类型的引用对象进行相互转换时,可能出现报错信息。
  • 注意:
    1.字符串一般通过基本类型对应的包装类的parse*方法,把字符串转换成基本类型。
    2.boolean类型不可以转换为其它的数据类型。
    public static void main(String[] args) {
        long long_ = 99999999999L;
        System.out.println(long_);//99999999999

        int short_ = (int) long_;
        System.out.println(short_);//1215752191

        String str = "99999999999";
        double v = Double.parseDouble(str);//9.9999999999E10
        long l = Long.parseLong(str);//99999999999
        System.out.println(v);
        System.out.println(l);

        int i = Integer.parseInt(str);//报错-NumberFormatException
        System.out.println(i);
    }

2.变量

  • 变量:
    变量是程序中最基本的存储单元。三部分组成,变量类型、变量名、值(一块内存区域)
    变量指向内存中保存的数据,(指向一块内存区域)
    变量必须先声明,后使用
  • 访问:使用变量名来访问这块区域的数据
  • 作用域:其定义所在的一对{ }内,变量只有在其作用域内才有效,同一个作用域内,不能定义重名的变量
  • 语法
    <数据类型> <变量名>;
    <数据类型> <变量名> = <初始化值>;
    int a ;
    int a = 10;

  • 赋值操作
    <变量名> = <新的值>;
    a = 20;


class A {

    //成员变量/实例变量
    public String paramStr = "666";
    //类变量/静态变量
    public static String paramStrStatic = "999";

    //普通方法
    //param: 参数
    public void test(String param) {
        //局部变量
        int a = 0;

        System.out.println("A -- test -- " + param);
    }

    //类方法/静态方法
    //param 参数
    public static void testStatic(String param) {
        //局部变量
        int a = 0;

        System.out.println("A -- testStatic -- " + param);
    }

}

public class Main {

    public static void main(String[] args) {
        //a: 局部变量/局部对象实例
        A a = new A();
       
        //通过对象实例,调用普通方法
        a.test(" 略略略111~ ");
        //通过对象实例,调用静态方法/类方法
        a.testStatic(" 略略略222~ ");
        //通过类名,调用静态方法/类方法
        A.testStatic(" 略略略333~ ");
    }

}

《上一篇:关键字、保留字、命名规范》

《下一篇:运算、位运算、比较、循环与控制》

《目录:Java渐进式学习》

《幕》

  • 留白 —<老吉>
  • ~ 今 ~ ❀ ~ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀❀❀❀ ❀❀❀❀❀❀❀

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长毛山顶洞人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值