变量和数据类型

`/*
数据类型:Java是一种强类型的语言,针对每一种数据都定义了明确的数据类型。

数据类型分类:
    A:基本数据类型
    B:引用数据类型(类,接口,数值)
    
基本数据类型:4类8种
    A:整数            占用字节数
        byte            1
        short           2
        int             4
        long            8
        
    B:浮点数
        float           4
        double          8
        
    C:字符
        char            2
    D:布尔
        boolean         1
    
    注意:
        整数默认是int类型
        浮点数默认是double类型。
        
        长整型后缀用L或者l标记。建议使用L。
        单精度浮点数用F或者f标记。建议使用F。

  */
  class DataTypeDemo {
public static void main(String[] args) {
    //定义变量的格式:
    //数据类型 变量名 = 初始化值;
    
    //定义一个字节变量
    byte b = 10;
    System.out.println(10);
    System.out.println(b);
    
    //定义一个短整型变量
    short s = 100;
    System.out.println(s);
    
    //定义一个整型变量
    int i = 1000;
    System.out.println(i);
    
    //超过了int的范围
    //int j = 1000000000000;
    long j = 1000000000000L;
    //long j = 100L;
    System.out.println(j);
    
    //定义浮点数据变量
    float f = 12.345F;
    System.out.println(f);
    
    double d = 12.345;
    System.out.println(d);
    
    //定义字符变量
    char ch = 'a';
    System.out.println(ch);
    
    //定义布尔变量
    boolean flag = true;
    System.out.println(flag);
  }
}`

//

`

/*
使用变量的时候要注意的问题:
    A:作用域
        变量定义在哪个大括号内,它就在这个大括号内有效。
        并且,在同一个大括号内不能同时定义同名的变量。
        
    B:初始化值
        没有初始化值的变量不能直接使用。
        你只要在使用前给值就行,不一定非要在定义的时候立即给值。
        推荐在定义的时候给值。
        
        定义变量的格式:
            a:数据类型 变量名 = 初始化值;
            b:数据类型 变量名;
              变量名 = 初始化值;
    
    C:在一行上建议只定义一个变量
        可以定义多个,但是不建议
    */
     class DataTypeDemo2 {
public static void main(String[] args) {
    //定义变量
    int x = 100;
    
    //错误,不能有同名的
    //int x = 200;
    
    //定义变量必须给值
    //int y;
    //System.out.println(y);
    
    int z;
    z = 100;
    System.out.println(z);
    
    //在一行上定义多个变量
    //int a = 10; int b = 20; int c  = 30;
    //上面的写法可以,但是不建议。
    int a = 10; 
    int b = 20; 
    int c  = 30;
    
    //int d, e;
    //d = 40;
    //e = 50;
    
    //int f,int g; //错误
    //int h; int i; //正确
    }
}`

//

`
/*
+是一个运算符。做加法运算的。

一般来说,我们在运算的时候,要求参与运算的数据类型必须一致。

注意:
    boolean类型不能转换为其他的数据类型

默认转换(从小到大的转换)
    A:byte,short,char—int—long—float—double
    B:byte,short,char相互之间不转换,他们参与运算首先转换为int类型
*/
class DataTypeDemo3 {
public static void main(String[] args) {
    //直接输出的方式做加法
    //System.out.println(3 + 4);

    //两个int类型做加法
    int x = 3;
    int y = 4;
    int z = x + y;
    System.out.println(z);
    
    //定义一个byte类型,一个int类型,做加法
    byte a = 3;
    int b = 4;
    System.out.println(a + b);
    
    //可能损失精度
    //byte c =  a + b;
    int c = a + b;
    System.out.println(c);
}
}`

//

  `

/*
强制转换:
    从大的数据类型到小的数据类型。
    
    格式:
        目标数据类型 变量 = (目标数据类型) (被转换的数据);
        
    注意:
        不要随意的去使用强制转换,因为它隐含了精度损失问题。
    */
class DataTypeDemo4 {
public static void main(String[] args) {
    byte a = 3;
    int b = 4;
    
    //这个肯定没有问题
    //int c = a + b;
    
    //byte c = 7;
    //这个是有问题的
    //byte c = a + b; 
    //用强制类型转换改进
    byte c = (byte) (a + b);
    System.out.println(c);
   }
}`

//

 `/*
思考题1:请问下面这个有没有问题
    double d = 12.345;
    float f = d;
    
思考题2:看看下面两个定义有没有区别呢?
    float f1 = (float)12.345;
    float f2 = 12.345f;
    
    f1其实是通过一个double类型转换过来的。
    而f2本身就是一个float类型。
    */
class DataTypeDemo5 {
public static void main(String[] args) {
    //把double赋值给float,加了强制类型转换
    double d = 12.345;
    float f = (float)d;
    
    //看看下面两个定义有没有区别呢?
    float f1 = (float)12.345;
    float f2 = 12.345F;
  }
}`

//

`
/*
面试题:
    byte b1=3,b2=4,b;
    b=b1+b2;
    b=3+4;
    哪句是编译失败的呢?为什么呢?
    b = b1 + b2;是有问题的。
    因为变量相加,会首先看类型问题,最终把结果赋值的也会考虑类型问题。
    常量相加,首先做加法,然后看结果是否在赋值的数据类型范围内,如果不是,才报错。
    */
class DataTypeDemo6 {
public static void main(String[] args) {
    //定义了三个byte类型的变量,b1,b2,b3
    //b1的值是3,b2的值是4,b没有值
    byte b1 = 3,b2 = 4,b;
    
    //b = b1 + b2; //这个是类型提升,所有有问题
    
    b = 3 + 4; //常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。
    }

}`

//

`/*
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?

若:byte b = (byte)300;
*/
class DataTypeDemo7 {
public static void main(String[] args) {
    //因为byte的范围是:-128到127。
    //而130不在此范围内,所以报错。
    //byte b = 130; 
    
    //我们可以使用强制类型转换
    byte b = (byte) 130;
    
    //结果是多少呢?
    System.out.println(b);
        }
    }
/*
分析过程:
    我们要想知道结果是什么,就应该知道是如何进行计算的。
    而我们又知道计算机中数据的运算都是补码进行的。
    而要得到补码,首先要计算出数据的二进制。
    
    A:获取130这个数据的二进制。
        00000000 00000000 00000000 10000010
        这是130的原码,也是反码,还是补码。
    B:做截取操作,截成byte类型的了。
        10000010 
        这个结果是补码。
    C:已知补码求原码。
                符号位     数值位
        补码: 1           0000010
        
        反码: 1           0000001
        
        原码: 1           1111110
    */
`

//

`/*
看程序写结果

通过字符和一个整数相加,我们给出一张表:ASCII码表。
    通过看完这张表以后,我们要记住三个值:
        'a'     97
        'A'     65
        '0'     48
*/
class DataTypeDemo8 {
public static void main(String[] args) {
    //直接输出一个字符
    System.out.println('a'); //a
    //输出一个字符和一个整数做加法
    System.out.println('a'+1); //98
   }
}`

//

`
/*
看程序写结果
    字符串数据和其他数据做+,结果是字符串类型。
    这里的+不是加法运算,而是字符串连接符。
*/
class DataTypeDemo9 {
public static void main(String[] args) {
    System.out.println("hello"+'a'+1); //helloa1
    System.out.println('a'+1+"hello"); //98hello
    
    System.out.println("5+5="+5+5); //5+5=55
    System.out.println(5+5+"=5+5"); //10=5+5
    }
}`
变量的概述及格式
不同数据类型变量参与运算图解

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

推荐阅读更多精彩内容