【Java】数据类型与变量(1)

简介: 【Java】数据类型与变量

1.常量

常量:程序运行期间,固定不变的量称为常量


常量按数据类型分类:


① 整型常量:程序中直接写的数字(没有小数点),就是整型常量。整型常量又可以分为: 二进制、八进制、十进制、十六进制 的整型常量。二进制的整型常量是由 0 和 1 构成,一般前面会加 0b 或者 0B ;八进制的整型常量是由 0~7 的数字构成,一般前面会加 0;十进制一般由 1~9 的数字构成,没有前缀;十六进制的整型常量是由0~9 A~F构成,一般前面加上 0x 或 0X。


public class Test {
    public static void main(String[] args) {
        System.out.println("二进制:"+0b11101);
        System.out.println("八进制:"+011101);
        System.out.println("十进制:"+11101);
        System.out.println("十六进制:"+0x11101);
    }
}

上述代码通过十进制打印后的结果:


我.png


为什么都是11101最后打印出来的结果不一样咧?


答:因为进制不一样所以转换成十进制也就不一样


② 浮点数常量:程序中直接写的小数,就是浮点数常量。浮点型常量又可以分为 double 双精度浮点型 和 float 单精度浮点型。要是在小数后面加了 d 或 D 就表示双精度浮点型,要是在小数后面加了 f 或 F 就表示单精度浮点型,要是在程序中直接写的 小数 没有加 后缀 默认是双精度浮点型。其中 单精度浮点型 还可以用指数形式来表示。


public class Test {
    public static void main(String[] args) {
        System.out.println(3.14);
        System.out.println(3.14d);
        System.out.println(3.14f);
        System.out.println(3e12);
    }
}

③ 字符常量:由 单引号 ' ' 括起来的单个字符,就是字符常量。转义字符也属于字符常量。


public class Test {
    public static void main(String[] args) {
        System.out.println('a');
        System.out.println('\n');
    }
}

④ 字符串常量::由 " " 括起来的,就是字符串常量。" " 里面一个字符都没有的长度就是0,里面要是有一个空格那么长度就是 1。


public class Test {
    public static void main(String[] args) {
        System.out.println("abc");
    }
}

⑤ 布尔常量:布尔常量是用来表示真假的,只有两个值一个是 true 表示真,还有一个是 false 表示假。


public class Test {
    public static void main(String[] args) {
        System.out.println(false);
        System.out.println(true);
        if(true) {
            System.out.println(true);
        } else {
            System.out.println(false);
        }
    }
}

⑥ 空常量: 空常量表示对象引用为空,只有一个值 null。


常量还可以从表现形式上进行分类:


① 字面值常量:就是看得这个常量就知道值


② 符号常量:就是用符号表示的常量,看得这个符号之后去找这个符号的值就能知道值了,通常要用 final 来定义这样一个符号常量


public class Test {
    public static void main(String[] args) {
        final int a = 10;
    }
}

2.数据类型

在 Java 中数据类型主要分为两类:基本数据类型 和 引用数据类型。


基本数据类型又可以分为:四类 八种


四类 八种:


去.png


public class Test {
    public static void main(String[] args) {
        byte a = 10;
        short b = 10;
        int c = 10;
        long d = 10;
        double e = 10.0;
        float f = 10.0f;
        char g = 'g';
        boolean h = true;
    }
}

上面代码中数据类型不一样,它们所占空间大小也就不一样,取值范围也不一样


不论是在16位系统还是32位系统,int都占用4个字节,long都占8个字节

整形和浮点型都是带有符号的

整型默认为int型,浮点型默认为double

字符串属于引用类型

字节是计算机中基本存储单元,1字节=8bit

数据范围是空间大小  - 1 次方,因为第一位是符号位。不然整型的数据范围,整型占四个字节,则数据范围就是 2 的 -31 次方 ~ 2 的 31次方-1

为什么会有数据类型?


答:其实各种编程语言都有数据类型,不同编程语言的数据类型也是大同小异的,都是为了使用适合的空间。如果存储的数据只需要一个很小的数据空间,而选择了一个大的数据空间,就会造成空间的浪费。要是存储的数据需要一个很大的数据空间,而选择了一个小的数据空间,那就存储不下。


3.变量

3.1 认识变量

变量:在运行过程中,其值可以改变的量就是变量


定义变量的语法格式: 数据类型  变量名 = 初始值;


public class Test {
    public static void main(String[] args) {
        int a = 10;
        System.out.println(a);
        a = 100;
        System.out.println(a);
    }
}

代码解析:定义了一个变量,类型是 int(整型),变量名是 a,初始值是 10 ,此时 变量 a 中存储的是 10 ,打印 a ,则打印的是 10。因为 a 是变量,所以给 a 赋值为 100, 此时变量 a 中存储的则是 100,打印 a,则打印的是 100。


3.2 变量的赋值

1.定义时赋初始值


public class Test {
    public static void main(String[] args) {
        int a = 10;
        System.out.println(a);
    }
}

2.先定义后赋值


public class Test {
    public static void main(String[] args) {
        int a ;
        a = 10;
        System.out.println(a);
    }
}

注意:必须在使用前赋值,否则程序直接报错。建议使用第一种方法,如果不知道赋什么值可以先赋值为 0


3.3 整型家族变量

1.字节型变量


public class Test {
    public static void main(String[] args) {
        byte a = 10;
        System.out.println(a);
        System.out.println("最大值:"+Byte.MIN_VALUE);
        System.out.println("最小值:"+Byte.MAX_VALUE);
    }
}


五.png

byte 在任何系统下都占 1 个字节

byte 的表示范围为:-128 ~ 127

使用时注意不要超过范围

byte 的包装类型为 Byte

通过 Byte.MIN_VALUE 可以访问短整型的最小值,通过 Byte.MAX_VALUE 可以访问短整型的最大值

2.短整型变量


public class Test {
    public static void main(String[] args) {
        short a = 10;
        System.out.println(a);
        System.out.println("最小值:"+Short.MIN_VALUE);
        System.out.println("最大值:"+Short.MAX_VALUE);
    }
}

为.png

short在任何系统下都占2个字节

short的表示范围为:-32768 ~ 32767

使用时注意不要超过范围

short的包装类型为Short

通过 Short.MIN_VALUE 可以访问短整型的最小值,通过 Short.MAX_VALUE 可以访问短整型的最大值

3.整型变量


public class Test {
    public static void main(String[] args) {
        short a = 10;
        System.out.println(a);
        System.out.println("最大值:"+Integer.MIN_VALUE);
        System.out.println("最小值:"+Integer.MAX_VALUE);
    }
}


额.png

int 不论在何种系统下都是 4 个字节

int 的表示范围为:-2147483648 ~ 2147483647

在给变量设置初始值时,值不能超过 int 的表示范围,否则会导致溢出

int 的包装类型为 Integer

通过 Integer.MIN_VALUE 可以访问整型的最小值,通过 Integer.MAX_VALUE 可以访问整型的最大值

4.长整型变量


public class Test {
    public static void main(String[] args) {
        long a = 10L;//一般在长整型变量初始值后面加上大写的 L ,方便与 ing 区分
        System.out.println(a);
        System.out.println("最小值:"+Long.MIN_VALUE);
        System.out.println("最大值:"+Long.MAX_VALUE);
    }
}

去.png


长整型不论在那个系统下都占8个字节

长整型的表示范围为:-9223372036854775808 ~ 9223372036854775807

长整型变量的初始值后加L或者l,推荐加L

long的包装类型为Long

通过 Long.MIN_VALUE 可以访问整型的最小值,通过 Long.MAX_VALUE 可以访问整型的最大值

byte、short、int、long都可以定义整型变量,为什么要给出 4 种不同类型呢?


答:因为存储空间大小的不同,所以为了更加合理化分配空间就把整型又细分成了4种不同的类型 。就好比如碗的大小一样,为什么碗又分为大碗和小碗了,要是有一个小朋友来你家吃饭,我们会给他用小碗,因为如果用大碗,他根本吃不了那么多的饭,就会造成空间浪费。要是有一个大人来你家吃饭,我们会给他用大碗,因为如果用小碗,他根本吃不饱,就会造成空间不足。


3.4浮点型家族变量

1.双精度浮点型


public class Test {
    public static void main(String[] args) {
        double a = 2.0;
        System.out.println(a);
        System.out.println("最小值:"+Double.MIN_VALUE);
        System.out.println("最大值:"+Double.MAX_VALUE);
    }
    }

去.png



double在任何系统下都占8个字节

浮点数与整数在内存中的存储方式不同,不能单纯使用 2的n次方 的形式来计算

double的包装类型为Double

double 类型的内存布局遵守 IEEE 754 标准(和C语言一样), 尝试使用有限的内存空间表示可能无限的小数, 势必会存在一定的精度误差,因此浮点数是个近似值,并不是精确值。

注:


整型 / 整型 != 小数:整型除以整型不可能得到一个小数


public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a / b);
    }
}

如果想要结果得要小数则有两种方法:


①.在整型/整型之前,先乘以一个小数,这样就可以让一个整型提升为浮点型


public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(a * 1.0 / b );
    }
}

②.类型设置为浮点型:


public class Test {
    public static void main(String[] args) {
        double a = 1.0;
        double b = 2.0;
        System.out.println(a / b );
    }
}

2.单精度浮点型


public class Test {
    public static void main(String[] args) {
        float a = 1.0f;
        System.out.println(a);
        System.out.println("最小值:"+Float.MIN_VALUE);
        System.out.println("最大值:"+Float.MAX_VALUE);
    }
}

其.png

float 类型在 Java 中占四个字节

同样遵守 IEEE 754 标准.

float的包装类型为Float。

3.5字符型变量

public class Test {
    public static void main(String[] args) {
        boolean a = true;
        if (a) {
            System.out.println("真");
        } else {
            System.out.println("假");
        }
    }
}

Java 中使用 Unicode 表示字符,因此 一个字符占用两个字节, 表示的字符种类更多, 包括中文

char的包装类型为Character

3.6 布尔型变量

public class Test {
    public static void main(String[] args) {
        boolean a = true;
        if (a) {
            System.out.println("真");
        } else {
            System.out.println("假");
        }
    }
}

Java中的布尔类型只有两个取值一个是 true 表示真,还有一个是 false 表示假。(注:C语言0表示假,非零表示真,大家不要弄混了哦)

Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法.

Java虚拟机规范中,并没有明确规定 boolean 占几个字节,也没有专门用来处理 boolean 的字节码指令,在 Oracle 公司的虚拟机实现中,boolean 占 1 个字节

boolean 的包装类型为 Boolean  


相关文章
|
2月前
|
存储 Java Go
【Java】(3)8种基本数据类型的分析、数据类型转换规则、转义字符的列举
牢记类型转换规则在脑海中将编译和运行两个阶段分开,这是两个不同的阶段,不要弄混!
213 2
|
2月前
|
Java Go 开发工具
【Java】(2)Java数据类型阐述、基本数据类型的占用和范围、二进制的讲述
数据的一种表示形式。十进制表示满十进一原则。二进制表示满二进一原则。例如:十进制例如:二进制计算机在任何情况下都只能识别二进制。
148 1
|
3月前
|
安全 Java
使用Java多态性进行数据类型转换
以上示范了如何通过多态性来执行安全有效地对于Java对象间相互之间进行正确方式与场合下正确格式与条件限定内对于各个层级关系内部成员及其功能调取与应有操作处理过程,并通过 `instanceof`关键字确保了程序运行期间遵循逻辑合理并符合预设规则条件限定内正常工作流程而无需担忧潜藏风险问题出现可能带来影响结果质量问题情况存在可能。
168 12
|
9月前
|
存储 Java
# 【Java全栈学习笔记-U1-day02】变量+数据类型+运算符
本篇笔记主要围绕Java全栈学习的第二天内容展开,涵盖了变量、数据类型、运算符以及Scanner类的应用。首先介绍了变量的概念与命名规范,以及如何定义和使用变量;接着详细讲解了Java中的基本数据类型,包括整型、浮点型、字符型、布尔型等,并通过实例演示了数据类型的运用。随后,深入探讨了各类运算符(赋值、算术、关系、逻辑)及其优先级,帮助理解表达式的构成。最后,介绍了如何利用Scanner类实现用户输入功能,并通过多个综合示例(如计算圆面积、购物打折、变量交换及银行利息计算)巩固所学知识。完成相关作业将进一步加深对这些基础概念的理解与实践能力。
194 13
|
4月前
|
存储 缓存 算法
Java数据类型与运算符深度解析
本文深入解析Java中容易混淆的基础知识,包括八大基本数据类型(如int、Integer)、自动装箱与拆箱机制,以及运算符(如&与&&)的使用区别。通过代码示例剖析内存布局、取值范围及常见陷阱,帮助开发者写出更高效、健壮的代码,并附有面试高频问题解析,夯实基础。
|
5月前
|
存储 人工智能 JavaScript
Java中的数据类型转换
本文介绍了 Java 中常见的数据类型转换方法,涵盖字符串与整型、长整型、浮点型、布尔型及日期类型的相互转换,并讲解了可能出现的异常和处理方式。
263 0
|
9月前
|
存储 传感器 缓存
java变量与数据类型:整型、浮点型与字符类型
### Java数据类型全景表简介 本文详细介绍了Java的基本数据类型和引用数据类型,涵盖每种类型的存储空间、默认值、取值范围及使用场景。特别强调了`byte`、`int`、`long`、`float`、`double`等基本类型在不同应用场景中的选择与优化,如文件流处理、金融计算等。引用数据类型部分则解析了`String`、数组、类对象、接口和枚举的内存分配机制。
329 15
|
9月前
|
Java
课时14:Java数据类型划分(初见String类)
课时14介绍Java数据类型,重点初见String类。通过三个范例讲解:观察String型变量、"+"操作符的使用问题及转义字符的应用。String不是基本数据类型而是引用类型,但使用方式类似基本类型。课程涵盖字符串连接、数学运算与字符串混合使用时的注意事项以及常用转义字符的用法。
297 9
|
9月前
|
Java
课时13:Java数据类型划分(布尔型)
观察布尔型的操作。布尔是一位数学家的名字,这个布尔发明了两个单词:True、False(一个表示真一个表示假)。一般布尔类型都只表示逻辑的计算结果。
235 9
|
8月前
|
存储 缓存 Java
理解Java引用数据类型:它们都是对象引用
本文深入探讨了Java中引用数据类型的本质及其相关特性。引用变量存储的是对象的内存地址而非对象本身,类似房子的地址而非房子本身。文章通过实例解析了引用赋值、比较(`==`与`equals()`的区别)以及包装类缓存机制等核心概念。此外,还介绍了Java引用类型的家族,包括类、接口、数组和枚举。理解这些内容有助于开发者避免常见错误,提升对Java内存模型的掌握,为高效编程奠定基础。
429 0