Java的数据类型

Java的数据类型包含基础数据类型、引用数据类型两大类。</br>


一、四大类八个基础数据类型

Java语言提供了八种基本类型。四种数字类型(四个整数型(默认是int 型),两个浮点型(默认是double 型)),一种字符类型,还有一种布尔型。

1、byte:

byte数据类型是8位、有符号的,以二进制补码表示的整数,占1字节。取值区间-128(-27)~127(27-1)),默认值是0,对应的Java引用类型是java.lang.Byte。

byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型的四分之一。

例子:byte a = 100,byte b = -50。

2、short:

short数据类型是16位、有符号的以二进制补码表示的整数,占2字节。取值范围-32768(-215)~32767(215 - 1),默认值是0,对应的Java引用数据类型java.lang.Short。

short数据类型也可以像byte那样节省空间。一个short变量是int型变量所占空间的二分之一。

例子:
short s = 1000,short r = -20000。
short s = 1;s+=1;(正确,s+=1 ==> s=(short)(s+1))
short s = 1;s =s+1;(错误,s+1会被强制转换为int类型,而s是一个short类型,故错误)

3、int:

int数据类型是32位、有符号的以二进制补码表示的整数,占4字节,取值范围-2,147,483,648(-231)~2,147,485,647(231 - 1),整型变量默认为int类型,默认值是0,对应的Java引用数据类型java.lang.Integer。

例子:int a = 100000, int b = -200000。

4、long:

long数据类型是64位、有符号的以二进制补码表示的整数,占8字节,取值范围-9,223,372,036,854,775,808(-263)~9,223,372,036,854,775,807(263 -1),这种类型主要使用在需要比较大整数的系统上,默认值是0L,对应的Java引用类型java.lang.Long。

例子:
long a = 100000L,int b = -200000L。
long a=111111111111111111111111(错误,整数型变量默认是int型)
long a=111111111111111111111111L(正确,强制转换)

5、float:

float数据类型是单精度、32位、符合IEEE 754标准的浮点数,占4字节,取值范围1.40129846432481707E-45f ~ 3.40282346638528860E38f,浮点数是有舍入误差的,float在储存大型浮点数组的时候可节省内存空间,默认值是0.0f,对应的Java引用类型java.lang.Float。

例子:
float f1 = 234.5f。
float f=6.26(错误 浮点数默认类型是double类型)
float f=6.26F(转换正确,强制)

6、double

double数据类型是双精度、64位、符合IEEE 754标准的浮点数,占8字节,
浮点数的默认类型为double类型,取值范围 4.9E-324 ~ 1.7976931348623157E+308 ,默认值是0.0,对应的Java引用类型java.lang.Double</br>
例子:
double d1 = 123.4。
float f=6.26(错误 浮点数默认类型是double类型)

7、boolean:

boolean数据类型表示一位的信息,只有两个取值:true和false,这种类型只作为一种标志来记录true/false情况,默认值是false,对应的Java引用类型java.lang.Boolean

例子:boolean one = true。

8、char:

char类型是一个单一的16位Unicode字符,用 ‘ ’表示一个字符。java 内部使用Unicode字符集。他有一些转义字符 ,占2字节,取值范‘\u0000’~’\uffff’,默认值’/u0000‘,对应的Java引用类型java.lang.Character

例子:
char a = 'a';</br>

二、引用数据类型

引用数据类型主要包含class、interface、数组等等。

引用数据类型和基础数据类型的区别:

基础数据类型保存在栈中,保存的是实际值,引用数据类型也保存在栈中,保存的是一个实际对象地址,将具体的内容保存在堆中;它们占用空间大小和存取速度不同;当引用类型和原始类型用作某个类的实例数据时所指定的缺省值,对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关;当传递方法参数类型为引用数据类型时,一个方法将修改一个引用数据类型的参数所指向对象的值,当传递方法参数类型为基本数据类型(数字以及布尔值)时,一个方法是不可能修改一个基本数据类型的参数。</br>

三、案例

public class JavaLearnOne {
    public static void main(String args[]) {
        int a = 1;
        JavaLearnOne one = new JavaLearnOne();
        one.changeParamsA(a);
        System.out.println("main:" + a);
        CallValue callValue = new CallValue();
        callValue.setA(10);
        System.out.println("callValue:" + callValue.getA());
        one.updateCallValue(callValue);
        System.out.println("callValue update:" + callValue.getA());
    }

    public void updateCallValue(CallValue value) {
        value.setA(1000);
    }

    public void changeParamsA(int a) {
        a = 1000;
    }
}

class CallValue {
    private int a;

    public void setA(int a) {
        this.a = a;
    }

    public int getA() {
        return this.a;
    }
}

以上输出结果:
main:1
callValue:10
callValue update:1000

说明:
当传递方法参数类型为基本数据类型(数字以及布尔值)时,一个方法是不可能修改一个基本数据类型的参数(传递的是值副本),因此在changeParamsA中修改的只是参数值的副本,java程序设计语言是采用了按值调用,即call by value。也就是说方法得到的是所有参数值的一个拷贝,方法并不能修改传递给它的任何参数变量的内容。

当传递方法参数类型为引用数据类型时,一个方法将修改一个引用数据类型的参数所指向对象的值。案例中的执行过程:
1、对象执行updateCallValue方法时,value被初始化为callValue的拷贝
2、调用value的setA方法是,value和callValue的CallValue对象同时被修改。
3、方法结束后,value将不会再使用,被释放,而callValue继续使用,没有变化,依然指向CallValue对象。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 第一类:逻辑型boolean 第二类:文本型char 第三类:整数型(byte、short、int、long) c...
    Jasonme阅读 1,071评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,617评论 18 399
  • Java的简单数据类型分为三大类:布尔型、字符型、数值型(整型、浮点型) 布尔型:boolean--------1...
    CharmingWong阅读 592评论 0 0
  • 1数据类型: 在Java中数据类型有 基本类型(8种),引用类型(3种)。基本数据类型①数值类型 整数型(byte...
    我的女人我来惯阅读 260评论 0 0
  • 今天,我要回姥姥家了,我很开心因为回到家就可以见到相思的朋友了。 一回到家睡了觉我就开始打电话...
    谢卓卿阅读 237评论 0 0