• 【Java SE】第三话·数据类型与变量


    本文已收录于专栏
    📖《Java SE》📖

    前言

    大家好,我是Anya-.-,欢迎来到Anya的小世界。

    本期Java内容与c有很多相似,学习过c的同学肯定会感觉到很熟悉,但是嗷,在熟悉的街角也可以看到不一样的风景~

    一、字面常量

    常量是指在程序运行期间,固定不变的量。

    字面常量又叫做常量值,通过数据直接显示。

    字面常量的分类:

    • 字符串常量: 由双引号直接括起来的,比如 “123456”,“I am Chinese”,“你好”
    • 整型常量: 程序中直接写的数字(ps:没有小数点),比如:100,520
    • 浮点型常量: 程序中直接写的小数,比如:0.20,3.14
    • 字符常量: 由单引号直接括起来的单个字符,比如 ‘a’,‘1’
    • 布尔常量: 只有 t r u e true true f a l s e false false
    • 空常量: n u l l null null

    二、数据类型

    Java中数据类型分为基本数据类型引用数据类型

    数据类型用来定义变量,我们可以这样理解,碗有大有小,大的用来盛汤,小的用来盛饭。程序运行时会给变量分配内存,至于分配多少看给变量定义了几个字节。数据类型与变量结合正是可以给变量定义多少个字节。

    评 判 一 个 数 据 占 用 多 大 内 存 , 表 示 的 单 位 : ( 从 小 到 大 ) \color{Green}{评判一个数据 占用多大内存,表示的单位:(从小到大)}
    bit byte kb mb gb tb
    1 byte = 8 bit
    1 kb = 1024 byte
    1 mb = 1024 kb
    1 gb = 1024 mb
    1 tb = 1024 gb

    1.基本数据类型(四类8种)

    四类:整型、浮点型、字符型、布尔型

    2.引用数据类型

    引用数据类型有很多种,常见有数组、String、类、接口、枚举…

    三、变量

    1.1 概念

    变量:程序运行过程中,可以修改的。

    语法格式:
    数据类型 变量名 = 数值;

    public class TestDemo {
        /**
         * 整型:
         * 1.大小:4个字节【可移植性强:不管是32位还是64位系统,int字节都为4个字节】
         * 2.在Java里,int没有所谓的无符号整数。so,int既能表示正数,又能表示负数
         * @param args
         */
        public static void main(String[] args) {
            //数据类型 变量名 = 数值
            int a = 1;
            System.out.println(a);
            System.out.println("最大值:"+Integer.MAX_VALUE);
            System.out.println("最小值:"+Integer.MIN_VALUE);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    运行结果如下:

    在Java,局部变量在使用时必须进行初始化,否则会编译不通过报错

    补 充 : \color{RoyalBlue}补充:
    局部变量:方法内部定义的变量

    成员变量:方法外定义的变量,在类里面,类里面有成员变量和成员方法

    1.2 一些有趣的报错

    编译器会自动进行检查 你赋值的字面常量值是否超出了 当前数据类型能够表示的数据范围。

    byte是8个比特位,范围是-128~127

    Anyway,下面这个报错原因与上面不一样,
    前者是赋值的字面常量超过当前数据类型能够表示的数据范围,编译器自动报错;
    后者是表达式右边进行了整型提升,4个字节欲赋值给一个字节的变量里。

    正确方式,进行强制类型转换

    输出结果为-128

    有些同学可能会在这里有疑问了,128不是超过byte范围了吗?上面说超过当前数据类型能够表示的数据范围,编译器自动报错

    哈哈哈不要急,跟小戴一起慢慢来~
    这里的130是字面常量,

    前文有提,此话重点在 字 面 常 量 \color{Red}字面常量

    嘻嘻,再回来,

    这 里 会 解 决 你 之 前 的 疑 惑 \color{Black}这里会解决你之前的疑惑

    a a a 是变量,所以,只能在程序运行的时候才能知道 a a a里面是几

    编译的时候不知道 a a a里面是几,运行的时候 a + 1 a+1 a+1 一加等于128,由于128是四个字节,然后再 强 制 类 型 转 换 强制类型转换 为一个字节。输出内容就变成了 − 128 -128 128

    1.3 float类型变量

    6.2 6.2 6.2 默认是 d o u b l e double double 类型的数据,
    double类型占8个字节,而float类型的数据占4个字节

    好家伙,那在Java中怎样定义一个float类型的变量呢?

    如下图,直接在数据后面加 f 或者 F 表示该数据为 f l o a t float float 型的数据。

    1.4 float与double

    运行截图:

    计算器中 1.1 × 1.1 = 1.21 1.1×1.1=1.21 1.1×1.1=1.21
    但用程序写出来计算结果如上图

    Why?
    因为在计算机中,小数是没有精确的数字的,它只能精确到小数点后几位

    f l o a t float float 类型的数据可以精确到小数点后6位

    1.5 boolean类型变量

    在Java中,没有 0 0 0 是假,非 0 0 0 是真的说法
    Java的真值只有两个,就是 t r u e true true f a l s e false false

    问:boolean几个字节?
    嘻嘻,Java中没有明确规定 b o o l e a n boolean boolean 类型的大小

    四、类型转换

    1.1 初识

    类型转换分为两种:

    • 自动类型转换(隐式类型转换)
    • 强制类型转换(显示类型转换)

    当小字节变量赋值给大字节变量时,发生自动类型转换

    大字节变量直接赋值给小字节会编译器进行报错
    so,需进行强制类型转换

    注意所有的强制类型转换会出现精度丢失的情况

    1.2 类型转换错误分析

    这里,小戴会分析两个比较有趣的报错~

    What?
    i n t int int 类型和 f l o a t float float 不都是4个字节吗?

    是的,没错。
    但是float类型表示的数据宽度宽于int类型,float类型除了可以表示整数之外,还可以表示小数。
    如果编译器准许将float类型可以直接赋值给int类型,那小数该怎么办呢?

    so,爱学习的你会了吗?嘻嘻,让我们继续往下看:

    分析:
    这里涉及到 类型提升

    所有小于4个字节的数据进行运算的时候,都会先转为4个字节,然后再参与运算。

    Moreever,
    当两种不一样的数据类型 进行运算的时候,会把其中较小的数据类型,转换为较大的类型,再进行运算

    这样可以提高运算的效率

    五、String类型

    C语言中没有String类型,但Java中有

    String str = "hello";
    Java中,这里的字符串常量"hello"和C不一样,不是以\0结尾,Java中没有这种说法。

    六、写在后面

    每逢高考毕业季,是否选择复读是个热门话题,昨天看到群里有提想要回去复读的。

    同作为一个21级大一下结束的湖南考生,我想了很久,以我的角度看,选择回去复读会面临着教材改革,知识闭塞等等的挑战,

    这个问题真的像一个“妈妈和女朋友同时掉进水里,你会选择救谁” 难以选择的问题

    不过我更喜欢往前面走,

    只要我们充满期待,勇敢向前,都会有属于我们的花季。

  • 相关阅读:
    nginx隐藏版本号和标识
    GPT出现Too many requests in 1 hour. Try again later.
    【机器学习基础】机器学习的基本术语
    SQL Server重置自增序列初始值
    【21天学习挑战赛—Java编程进阶之路】(6)
    export、exportdefault、module.exports对比
    uniapp开发微信小程序,webview内嵌h5,h5打开pdf地址,解决方案
    【算法基础】时间复杂度和空间复杂度
    【电路笔记】-基尔霍夫电路定律
    都有哪些查找和下载英文文献的方法?
  • 原文地址:https://blog.csdn.net/weixin_60777483/article/details/125538408