任何编程语言都离不开数据结构,java也不例外,在java的世界里,数据都有自己的数据类型,而且不同的数据类型有不同的特性。
概念
Java 语言是一种强类型语言。第一、所有的变量必须先声明、后使用。第二、指定类型的变量只能接受和声明的类型匹配的类型值。强类型语言的好处是在编译阶段就可以发现源代码的错误,从而保证程序更加健壮。但也有缺点,有时程序运行中难以确定其类型,面对这种业务场景java的强类型就有些死板,索性后期java又推出了泛型弥补这个缺失。两者配合实现动静皆宜。不论如何,强类型语言的优点还是大于劣势的。
又出来一个新名词,泛型?什么是泛型大家先不用着急,后期专门有章节进行学习。
上面的话太官方,学过的同学好理解,没学过的同学不知所云。那我们就通俗点说,在 Java 中存储的数据都是有类型的,而且必须在编译时就确定其类型。Java中有两类数据类型:
Java数据类型
在 Java 的领域里,基本数据类型变量存的是数据本身,而引用类型变量存的是保存数据的空间地址。说白了,基本数据类型变量里存储的是直接放在抽屉里的东西,而引用数据类型变量里存储的是这个抽屉的钥匙,钥匙和抽屉一一对应。
1.1.1 八种基本类型
基本类型(primitive type)这八种厉害了,内置的,直接使用。
八种基本类型
注意:声明变量类型时,会给变量分配内存,按类型的所占空间数来分配,那这里就很讲究了,例如:如果年龄应该使用什么类型呢?最佳是byte,0~100,能活100岁很了不起,非常高寿了。当然也有习惯的因素,开发者习惯int age来定义。例如:男女就两个值,习惯选择boolean gender = false。false代表女,true就代表男。
Java
所以记住一点,实际开发尽量用字节空间少的,内存是宝贵的稀缺的就那么点,少占点。
1.1.1 默认初始值
八种基本类型的初始值:
package javase.base;import org.junit.Test;//打印每个基本类型的初始值public class TestInitValue {//八种基本类型初始值//声明成局部变量必须设置初始化值,所以使用成员变量boolean b;char c;byte bt;short s;int i;long l;float f;double d;Integer r1;@Testpublic void test() {System.out.println("布尔类型:"+b);System.out.println("字符类型:" + (int)c);System.out.println("字节类型:" + bt);System.out.println("短整形:" + s);System.out.println("整形:" + i);System.out.println("长整形:" + l);System.out.println("单精度浮点类型:" + f);System.out.println("双精度浮点类型:" + d);System.out.println("包装类型:" + r1);}}执行结果:布尔类型:false字符类型:0字节类型:0短整形:0整形:0长整形:0单精度浮点类型:0.0双精度浮点类型:0.0包装类型:null1.1.1 交换值package javase.basetype;import org.junit.Test;public class TestSwap {@Testpublic void swap() {int a = 10;int b = 20;System.out.println("交换前:a="+a+",b="+b);int t = b; //中间的临时变量,用完就抛弃,过河就拆桥b = a;a = t;System.out.println("交换后:a="+a+", b="+b);}}
当基本数据类型作为参数进行传递时,传递的是值,当有一个方法中的值发生改变,则对另一个方法中的值没有任何影响(各自是独立的)
交换过程:
交换过程
编程语言的数据结构,而Java的数据类型有哪些呢,都在上面了,这八种基本数据类型,一定要牢记,这是基础。
Java11