Java基本数据类型

目录:

1.基本数据类型

2.引用数据类型

数据类型:

        Java语言是一个强类型语言

        1.所有变量,必须先声明类型,再使用。

        2.指定类型的变量,只能装对应类型的数据。通俗来讲,什么样的瓶子装什么样的酒。

Java数据类型可分为两大类:

1.基本数据类型

共8个   

4个整型(不支持小数):        byte        short        int        long

2个浮点型(支持小数):        float        double

1个字符型                     :         char

1个 boolean 型             :         boolean(只支持两个值:true 或者 false)

四个整数(不支持小数):

byte:  一个字节。    1 byte =8 bit (每个 bit 相当于一个硬币,有两个状态)    -128~127    256

short:两个字节。    -32768~32767        65536

int:     四个字节。    -2G~2G-1

long:  八个字节。    -2^63~2^63-1

整数Test程序 及 运行结果:

public class 整数Test

{

    public static void main(String[] args)

    {

        int a;

        a = 456;

        int b;

        b = a;

        System.out.println("~~~~" + a);

        System.out.println("~~~~" + b);

        byte bb = (byte)345;

        System.out.println("~~~~" + bb);  //溢出

        byte b2 = (byte)385;

        System.out.println("~~~~" + b2);  //溢出  补码

    }

}


整数Test



2个浮点数(支持小数):

        A.浮点数有两种表现形式:

               1.10进制形式:    5.12        .512(没有整数部分 0 可以省略)

               2.科学记数法:    .12e4

        B.浮点数默认是 double 类型

               如果想使用一个 float 型的浮点数,应该在浮点数后添加 F 或 f。

               推荐使用 double 型的浮点数。

       C.浮点数有三个特殊值:

                正无穷大:用正浮点数除以 0 就是正无穷大。所有正无穷大都相等。(Double.POSITIVE_INFINITY)

                负无穷大:用负浮点数除以 0 就是负无穷大。所有负无穷大都相等。    (Double.NEGATIVE_INFINITY)

                非数:      用 0.0 除以 0 就是非数。              非数与自己不相等。  (Double.NaN)

浮点数Test程序 及 运行结果:

public class 浮点数Test

{

    public static void main(String[] args)

    {

        double b = .512;

        System.out.println(b);

        double bb = .12e4;

        System.out.println(bb);

        float f = 1.12f;// 0.12 默认是double 类型

        double max1 = 0.5/0.0;

        double max2 = 6666666/0.0;

        System.out.println(max1 == max2);

        double max3 = -0.5/0.0;

        double max4 = -666666/0.0;

        System.out.println(max3 == max4);

        double nan1 = 0.0/0.0;

        double nan2 = 0.0/0.0;

        System.out.println(nan1 == nan2);

}


浮点数Test


1个字符型:char

        A. 每个字符型的变量只能装一个字符,既可是英文的,也可是中文的。而且用单引号包起来。

        B.字符型的值有 3 种表示方式:

               1.  ‘a’    ,   ‘中’

               2. 转义字符:  ‘\n’  换行  将当前位置移到下一行开头

                                        \r    回车  将当前位置移到本行开头

                                        \t    横向跳格  水平制表(HT) (跳到下一个TAB位置)

                                        \b  退格  将当前位置移到前一列

                                        \f   换页(FF),将当前位置移到下页开头

                                        \"  代表一个双引号字符

                                        \'   代表一个单引号(撇号)字符

                                        \\  代表一个反斜线字符''\'

转义字符

               3. 直接用 Unicode 的形式来表示。

        C. 每个字符占 2 个字节(16位),一共有 65536 种状态,相当于可表示 65536 个字符。

                整个 Java 一共也就是支持 65536 个字符。

            字符型的变量,直接可作为“正整数”使用,最高位依然是数值位。0~65535。

字符型Test程序 及 运行结果:

public class 字符型Test

{

    public static void main(String[] args)

    {

        char c = 'a';

        char c2 = '国';

        char rr = '\r';  //相当于13

        char nn = '\n';  //相当于10

        System.out.println((int)rr);

        System.out.println((int)nn);

        System.out.println(rr + nn);

        System.out.println("------------");

        //System.out.println(rr + "" +nn);

        System.out.println(rr);

        System.out.println(nn);

        System.out.println("============");

        System.out.println("******");

        char bb = '\b';  //相当于键盘上的 backspace

        System.out.println(bb);

        System.out.println(bb);

        System.out.println(bb);

        System.out.println(bb);

        System.out.println(bb);

        char achar = 'a';  //数值是97

        System.out.println((int)achar);

        char Achar = 'A';  //65

        System.out.println((int)Achar);

        char zerochar = '0';  //数值是48

        System.out.println((int)zerochar);

        //  一个字符占 16 bit,因此可写成 4 位的 16 进制

        char ca = '\u0042';  // 66  必须是 \u  (unicode形式)

        System.out.println(ca);

    }

}


字符型Test

练习:简单随机“验证码”  程序 及 运行结果:

//  生成一个六位、随机大写字母

import java.util.*;

public class RandomStr

{

    public static void main(String[] args)

    {

    // 控制代码循环 6 次

        for(int i = 0;i < 6;i++)

        {

            Random rand = new Random();//  创建一个随即对象

            int randNum = rand.nextInt(25);//  生成一个 0~25 之间的随机数

            System.out.print((char)(randNum + 65));//  得到 65~65+25 之间的数值

        }

    }

}


RandomStr

/****************************************

补充1:TB  之上  接着就是拍字节(PB)、艾字节(EB)、泽它字节(ZB,又称为皆字节)、尧它字节(YB)、最大是千亿亿亿字节(BB)、最小是比特(b,又称为位)。

补充2:整数有如下 4 种表示形式

                   10 进制整数:      默认就是

                   16 进制整数:      0x 0开头,0~9  abcdef

                   8   进制整数:      以 0 开头,0~7

                   2   进制整数:      以 0b 开头,0~1

当我们直接使用一个整数时,整数默认是 int 类型。

           如果想使用一个 long 型的整数,应该在整数后添加 L 或 l。

补充:3:关于整数的存储:

           1.  最高位是符号位。

                最高位是 0 代表正数,最高位是 1 代表负数

           2.所有数值在计算里都以补码形式保存的。

           原码:    直接换算出的二进制码

           反码:    除符号位不变之外,其他位都取反。

           补码:    负数补码 = 反码 +1;正数补码 = 原码。

补码的设计目的是:

⑴使符号位能与有效值部分一起参加运算,从而简化运算规则.

⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计


******************************/

基本数据类型的类型转换:

        1.Java 是强类型的语言。

                   A. 所有变量,必须先声明,后使用。

                   B. 指定类型的变量,只能装相应类型的值

        8 个基本类型,7个数值型 + 1个boolean型

        7 个数值型    (4 个整型、2 个浮点型、 char 可当成正整数型)

Java 的类型转换可分为两种:

    1.   自动类型转换:

                表数范围小的,可以自动转换表数范围大的。

直接写一个整数,默认是 int 型,但如果它的范围在 byte、short 表数范围之内,而且程序直接将该值赋给 byte、short 类型的变量,系统会自动把它当成 byte、short 用

          1.所有数值型,都可以自动转换为 double 类型。

          2.所有数值型,除了 double 之外,都可以自动转换为 float 型

          3.所有整型都可以自动转换为 long 型 


自动类型转换

2.强制类型转换

    当我们要把表数范围大的变量或值,转为表数范围小的,就需要使用强制转换。

    语法格式:    (类型)

    强转是可能丢失精度的。

强制类型转换 (溢出的计算)程序 及 运行结果:

public class 强制转换

{

    public static void main(String[] args)

    {

        double d = 34;// 34默认是 int 型,int 型可以自动转换 double ,因此是对的

        float ff = 12;// 12默认是 int 型,int 型可以自动转换 float

        float fo = '\u0078';//  '\u0078'是 char 型,char 可以自动转换 float 型

        double dd = '\r';//  '\r'是 char 型,char 可以自动转换 double 型

        int iVal = 'A';//  'A'是 char 型,char 型可自动转换成 int 型

        float ft = (float)d;// 由于 d 是 double 型,double 不能自动转换为float

        // 因此需要进行强转

        double de = fo;//  由于 fo 是 float 型,float 型可以自动转换为 double

        char cr = (char)dd;// 由于 dd 是 double 型,double 型不能自动转换为 char

        // 因此需要强转

        //强转是可能丢失精度的。

        short st = (short)33330;// 33330默认是 int 型,int 不能自动转换为 short ( -32768~32767)。因此强转

        System.out.println(st);

        byte bb = 12;//  12 默认 int,但由于 12 在byte内,系统会自动把它当成byte

        int it = -3;

        byte bt = (byte)it;// it 是 int 型,不能自动转换为byte,因此强转

        System.out.println(bt);

    }

}

强制转换

3.表达式类型的自动提升

规则:整个表达式的数据类型,与表达式中最高等级的运算数的类型相同。

自动提升程序 及 运行结果:

public class 自动提升

    {

        public static void main(String[] args)

        {

        byte bt = 2; //  2 是 int 型。

                          //  由于2在 byte 范围,而是直接赋整数值

                         //  系统会自动将它当成 byte 处理。

        bt = bt + 1;      //  错误的            正确应该为:bt = (byte)(bt + 1)

                                      //  1 默认是 int 型

                                     //  整个表达式的类型与 1 的类型相同,因此表达式的类型就提升成了 int 型

        int a = 5;

        a = (int)((a + 20) / 2.5); // 2.5 是 double 型

        System.out.println(a);

        int it = 10;

        it = it / 4; // it 是 int,4也是int,整个表达式依然是 int 型。

        System.out.println(it);

        it = 10;

        double du = it / 4; // it是int,4也是int,整个表达式依然是 int 型。

        System.out.println(du);

    }

}


自动提升


直接量:

    直接在源代码中指定的值,就是直接量。

    8 个基本数据类型,都可以指定直接量。

    boolean 类型,只有两个直接变量:true,false

    null 直接量,只能赋值给引用变量。null 直接量不能赋值给基本类型的变量。



2.引用数据类型

类,接口,数组


以上,未完


写在最后:

今早终于把东西搬过来了,总算是为自己可能三个月的实习找到了一个窝!!!昨天坐一号线地铁去大望路找女票,地铁的一幕引发了我的思考,一对小夫妻带着大概几个月的娃,孩子哭哭啼啼,孩子的父亲并没有多大耐心,只有母亲去安慰孩子……或许再过几年,我也要为人父,本来是觉得这件事距离我很远的啊,再看看公司的前辈,也有很多已经结婚了。北京这个地方,确实很迷人,扎根北京的想法我也不知道想过没,总之作为女票口中第一代进京的我们来说,是有些难吧,可能终将有一天,我也会变成房奴吧,哈哈。但是不管怎么说,还是要抓住眼下,世界会残酷的淘汰掉不会改变的人(昨地铁上看到的一句话),来,干了这碗驴杂汤!

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

推荐阅读更多精彩内容