0基础学Java,老薛带你学Java数据类型以及赋值方式(二)

2.2.5 浮点数(双精度)

  • 注意事项
表示方式 所占空间 精度范围
double 8字节 精确到15-16位
  • 案例分析
public class DataTypeTest05 {
    public static void main(String[] args) {
        //①: 声明一个double类型的变量
        double num = 3.14;
        System.out.println("double类型num的值是:"+num);
        //②: 通过相除得到一个double类型的值
        num = 10/3.0;
        System.out.println(num);
    }
}
  • 结论

小数的数据类型通过double指定,占内存8个字节,能够代表的数的精度范围是15到16位;这里注意看上述代码的第二次赋值,此时num=10/3.0得到的结果是3.33….35,这里要注意一点,Java中通过double存储的小数本身是存在问题的。如果对于数据的精确到要求较高,或者可能做一些货币计算,那么推荐大家使用BigDecimal。

2.2.6 浮点数(单精度)

  • 注意事项
表示方式 所占空间 精度范围
float 4字节 精确到6-7位
  • 案例分析
public class DataTypeTest06 {
    public static void main(String[] args) {
        //①: 声明一个float类型的变量
        float num = 3.14;
        System.out.println("float类型num的值是:"+num);
    }
}
  • 结论

这里要千万注意,默认情况下在Java中所有的小数的默认类型是double类型,所以当给float赋值时,本身赋值的数是double类型;编译器觉得赋值的右边是double类型而左边是float类型,所以报错Type mismatch: cannot convert from double to float。

解决办法: 在小数字面值的后面加"F"(推荐)或者是"f"。

public class DataTypeTest06 {
    public static void main(String[] args) {
        //①: 声明一个float类型的变量
        float num = 3.14F;
        System.out.println("float类型num的值是:"+num);
    }
}

2.2.7 字符型

  • 注意事项
表示方式 所占空间
char 2字节
  • 案例分析1
public class DataTypeTest07 {
    public static void main(String[] args) {
        //声明一个char类型的变量
        char ch = '薛';
        System.out.println("char类型的变量ch是:"+ch);
    } 
}
  • 结论1

这里要千万注意,char类型的变量赋值的时候,需要通过单引号引起来的单个字符。注意不能是0个也不能是多个,更不能是双引号。PS:双引号引起来的是字符串,是一组字符序列。通过String类型去指定

  • 常见报错信息
编写方式 报错信息
char ch = 'ab'; Invalid character constant 无效的字符常量
char ch = ''; Invalid character constant 无效的字符常量
char ch = "a"; Type mismatch: cannot convert from String to char 类型不匹配,无法将字符转为字符
  • 案例分析2

我们之前带大家分析过,Java采用的是Unicode字符集合,所以对于字符类型的数值而言,除了通过单引号赋值单个字符之外还可以通过转义字符和Unicode的值来进行赋值操作。

  • 通过转义字符赋值
企业微信截图_15536914461553.png

注意看红色区域,对于某些字符是可以通过\字符这样的方式进行赋值操作的。比如:

什么是转义字符?

在Java中,通过\对于原本的字符的含义让其发生改变,我们称之为转义字符。

举例

public class DataTypeTest06 {
    public static void main(String[] args) {
        char ch1 = 't';
        System.out.println("字符ch1的值是:"+ch1);
        
        char ch2 = '\t';
        System.out.println("字符ch2的值是:"+ch2+"。");
    } 
}

输出

字符ch1的值是:t
字符ch2的值是:   。

常见转义字符以及含义

转义字符 说明 代码示例 显示
\b 退格 System.out.println("我是\b退格"); 我是退格,会划分成两个词
\n 换行符 System.out.println("我是\n换行"); 我是换行
\r 回车符 System.out.println("我是\r回车符"); 我是<br />回车符
\t 制表符 System.out.println("我是\t回车符"); 我是 制表符
\ " 双引号 System.out.println("我是\ "双引号"); 我是"双引号
\ ' 单引号 System.out.println("我是\ ''单引号"); 我是’单引号
\ \ 反斜杠 System.out.println("我是\ \单引号"); 我是\单引号
  • 案例分析3
public class DataTypeTest07 {
    public static void main(String[] args) {
        //通过Unicode值来给字符类型赋值以\u开头后跟十六进制数
        char ch = '\u0021';
        System.out.println("字符ch2的值是:"+ch+"。");
    } 
}
  • 输出
字符ch2的值是:!
  • 总结

根据上面ascii表中罗列的十进制的数,可以通过\u后跟一个16进制的数,表示一个字符的数值。比如!显示的十进制的数是33,转为16进制是0021,所以通过\u0021显示的就是

案例分析4

根据上面的ascii表中的内容,我们发现所有的字符其实在计算机中存储的都是对应的十进制转换为的二进制的数据,也就意味着字符会对应的2个字节的正整数[0,65535];

public class DataTypeTest08 {
    public static void main(String[] args) {
        //对于字符a进行简单的+1操作查看结果
        char ch = 'a';
        System.out.println("字符ch的值是:"+(ch+1));
    } 
}
  • 总结

char类型字符,是可以参与四则运算的,相当于一个16位的无符号整数,表示数的范围是[0,65535]。

2.2.1 逻辑型

  • 注意事项
表示方式 表示逻辑 所占空间
逻辑型(boolean) true(真)或者 false(假) 1位
  • 案例分析
    public class DataTypeTest09{
        public static void main(String[] args){
            //1:声明一个boolean类型的变量
            boolean flag = true;
            System.out.println("boolean类型的变量flag的值是:"+flag);
            //改变flag的值
            flag = false;
             System.out.println("boolean类型的变量flag的值是:"+flag);
        }
    }
  • 结论

逻辑型boolean所占空间是1位,只存在两个值,要么为true,要么为false。注意在Java中不能使用0,1代表;并且其它的基本数据类型是无法转换成为boolean类型的。

强调一点,boolean类型的变量实际在内存中所占的空间是8位,一个字节。这个是大多数计算机实际的存储的方式。

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

推荐阅读更多精彩内容