Java回顾——Java中的数据类型

今天来回顾一下Java中的数据类型。

首先先回顾一点最基础的东西,Java中的命名规则,我们在命名的时候要做到见名识意,不要写一些乱七八糟的东西,而且不能用Java中的关键字来命名。
记得刚学C的时候,第一件事就是被关键字,其实用得多了也就都知道了,具体命名一般是这样规范:
变量------小驼峰命名法,举个例子:count,myCount。
常量------全部大写,举个例子:PI。
类名------大驼峰命名法,举个例子:Dog,MyDog。
方法名------小驼峰命名法,举个例子:method,myMethod。
小驼峰命名法简单点说就是一个单词时全小写,多个单词时除开第一个单词后续单词的首字母要大写。
大驼峰命名法简单点说就是所有单词的首字母都大写,其它小写。
最重要的是见名识意!!!

好了,进入今天的正题,数据类型:

Java中的数据类型分两类:
1.基本数据类型,2.引用数据类型。

Java中基本数据类型大类:
种整数类型(byte、short、int、long)
种浮点数类型(float、double)
种字符类型(char)
种布尔类型(boolean)

引用数据类型种:
类(class)
接口(interface)
数组

基础的东西就不多说了,像基本数据类型之间的类型转换、缺省值和取值范围这些,说一下基本数据类型的包装类
比如说byte的包装类是Byte,float的包装类是Float,首字母大写是其基本类型的包装类。但是int有点不一样,它的包装类是Integer。包装类有什么用呢?它里面封存了一些属性和方法,比如说Integer,Integer.MAX_VALUE就可以取到int类型取值范围的最大值,Integer.parseInt()这个方法可以将字符串类型的转为整数,当然要传参,如果参数字符串包含非数字的字符的话便会抛异常。

//int取值范围的最大值,下为Integer包装类中代码
@Native public static final int   MAX_VALUE = 0x7fffffff;

然后说一下引用数据类型。
说引用数据类型的时候首先要强调一个东西,就是String,String不是基本数据类型,它属于引用数据类型里面的类(class),它是一个类。
好,引用数据类型有三种,类、接口和数组。
引用数据类型和基本数据类型有什么区别呢?通过名字就可以猜出一点点端倪,引用,说明不是本身嘛。举个例子:

int a = 3;
int b = a; //b==3
String s = "abc";
String m = s; //s->"abc"

简单一点说,基本数据类型在栈内存分配存储空间后,会直接存储在栈内存中,比如说int a,栈内存里创建了一个叫a的空间,在里面存储了一个3,int b = a,是栈内存里又创建了一个叫b的空间,把a空间里的值赋给b,是值传递;
但是引用数据类型不同,比如说String s,栈内存开辟一个叫s的空间,里面并没有存一个叫“abc”的字符串,字符串是创建在字符串常量池里的,s里面存的是一个引用,就是一个地址,这个地址指向了“abc”这个字符串,m = s,是s将“abc”的地址告诉了m,m内存的也是地址。
所以总结一下,基本数据类型是值传递,但引用数据类型是引用传递,传的是地址,而不是具体内容,地址是指向具体内容的。
不过String类型还是特殊了一点,作为最基本最常用的引用数据类型,jvm专门给它开辟了一部分空间叫字符串常量池,如果你要新建一个字符串类似String s = “abc”,它会现在字符串池里查找,是否有“abc”这个字符串,如果有,把它的地址赋给s,如果没有,则新创建一个。
那么普通的类类型引用是在哪里创建呢?是在堆内存中,通过new的方式来创建类的引用,字符串同样如此,String s = new String(“abc”);这时“abc”就不是在字符串常量池中,而是存储在堆内存中了。
引用数据类型不同于基本数据类型的,他在栈内存里并没有存储自己的值,或者说实例,实例创建在堆内存中,栈内存只是存放指向堆内存实例的地址。

关于数据类型就说这么多吧,欢迎各位大佬批评指正。

猜你喜欢

转载自blog.csdn.net/weixin_43622082/article/details/86496269