无法将类型“int”隐式转换为“byte”_0003.数据类型和运算符001

1.整数的存储

a)正整数的存储
    把正整数转化为二进制,然后存储在内存中。
    7 --转化为二进制--> 0000-0000 0000-0000 0000-0000 0000-0111
    补充:7属于整数常量,也就是属于int类型,int类型占用四个字节。
b)负整数的存储
    -7,首先先获取-7的原码,然后再获取反码,最后再获取补码。
    原码:把负整数取绝对值,然后获取该绝对值的二进制
         0000-0000 0000-0000 0000-0000 0000-0111
    反码:就是把原码的每一个二进制位取反,0-->1, 1-->0
         1111-1111 1111-1111 1111-1111 1111-1000
    补码:就是在反码的基础上+1
         1111-1111 1111-1111 1111-1111 1111-1001
终极结论:正整数的最高位一定是0    
          负整数的最高位一定是1

2.正整数的加法运算(了解)

7 + 6 = 13
   7 0000-0000 0000-0000 0000-0000 0000-0111
 + 6 0000-0000 0000-0000 0000-0000 0000-0110    
--------------------------------------------------
= 13 0000-0000 0000-0000 0000-0000 0000-1101

3.关键字和保留字

关键字:就是java语言中已经事先定义好具有特殊含义的名字。
保留字:目前java语言中还没有使用(暂时没有特殊含义),但是java后期可能会使用

4.标识符

4.1标识符的作用?

用于给变量、常量、类、包和方法取名的规则。

4.2标识符的规则

a)由数字、字母、下划线和$组成,但是开始不能为数字。
    b)标识符不能是关键字或保留字。
    c)标识符对长度没有任何限制。
    补充:因为java采用的是unicode编码,所以标识符还可以是中文,但是不建议使用。

4.3命名规范

类名:大驼峰。每个单词首字母都是大写。例如:VariableDemo
    变量名、方法名:小驼峰。首单词字母小写,其余单词首字母大写。例如:userName
    常量名:全部单词大写,多个单词以下划线连接。例如:MAX_VALUE
    包名:单词全部小写。

5.变量

5.1变量的本质是什么??

变量在内存中开辟一块内存空间(容器),用来存储数据的容器。

5.2变量的声明

本质:在内存中开辟一块指定大小的内存空间,用于准备存储指定类型的数据。
    语法:数据类型  变量名;
            int      num1;  --> int占用四个字节
            byte     num2;  --> byte占用一个字节

5.3变量的赋值

本质:通过变量名找到内存中的存储空间,然后把等号右边的数据存入该内存中间中。
    语法:变量名 = 数据;
            num1 = 10;
            num2 = 20;  
    注意事项:       
        1."=",赋值运算符,把等号右边的数据赋值给等号左边的变量          
        2.赋值的数据类型必须和声明变量的数据类型保持一致。

66effd6e7712d62f4dbd3a1b5c63638f.png

变量

6.常量

6.1常量和变量对比

常量:只能赋值一次,赋值完毕以后就无法再次赋值了。
    变量:可以重复多次执行赋值操作。

6.2固定值常量

整数常量:10, 20, ....
    小数常量:123.45, 3.1415926, ...
    字符常量:'a', '1', '我', ... 
             使用单引号包裹的一个字符,我们称之为字符常量
    布尔常量:true和false
    字符串常量:"hello world", "", "sxt", ... 
             使用双引号包裹的内容,都属于字符串常量    
    引用数据类型常量:null

6.3使用final关键字修饰的常量

常量声明语法:final 数据类型 常量名;
                    final int NUM;
    常量名的命名规范:单词全部大写,多个单词以下划线连接。
    常量名的命名规则:必须遵守“标识符”的命名规则。

7.数据类型分类

a)基本数据类型(今天学习)
    八大基本数据类型
b)引用数据类型(后面学习)
    数组,字符串,对象,...

8.基本数据类型

数值型
    整数型
        byte类型
        short类型
        int类型
        long类型
    浮点型
        double类型
        float类型
字符型
    char类型
布尔型 
    boolean类型

8.1.整数型

byte类型,1个字节,-128到127,-2^7到2^7-1
short类型,2个字节,-32768到32767,-2^15到2^15-1
int类型,4个字节,大概在正负21亿之间,-2^31到2^31-1
long类型,8个字节,非常大,-2^63到2^63-1
注意事项:
    1)根据你需要存储的数据范围,来合理的选择使用数据类型。
        避免存储的数据超出数据类型的表数范围。
            例如:byte num = 128;
        避免使用的数据类型不合适浪费内存空间。
            补充:现实开发中,一般只使用int和long即可.
    2)整数型固定值常量的默认类型是int类型。      
        long num = 10000000000; // 10000000000超出了int的表数范围
    3)在整数型固定值常量末尾添加“L”或“l”,那么该常量就变为了long类型常量了
        建议:建议使用“L”,不建议使用“l”
    4)关于整数型固定值常量还有哪些呢???
        a)十进制固定值常量,例如:1, 2, 3, ...
        b)八进制固定值常量,例如:017, 011, ...
        c)十六进制固定值常量,例如:0x1A, ...

8.2.浮点型(小数型)

float类型,4个字节,能精确到小数点后7位,单精度类型。
double类型,8个字节,精确度是float类型的两倍,双精度类型。
注意事项:   
    1)现实开发中,我们使用double类型较多。
    2)固定值小数常量的默认数据类型为double类型。
    3)在小数固定值常量默认添加“F”或“f”,那么该常量就变为了float类型的常量了
    4)因为小数的存储方式不一样,那么最好不要对小数最非常精确的比较
    5)小数的固定值常量有哪些???
        十进制小数常量,例如:12.34, 3.14, ...
        使用科学计算法表示小数常量,例如:3.1E5, 3.1E-3 
            3.14E2,等效于:314.0,也就是小数点往右移动两位
            3.14E-2,等效于:0.0314,也就是小数点往左移动两位

8.3.布尔型,boolean类型

常量值:true,false
    true: 代表真或条件成立
    false: 代表假或条件不成立
布尔类型的使用场合:
    常用于条件判断,例如:条件成立该做什么事,条件不成立又该做什么事。
随堂案例:
    判断两个变量的最大值。
    技能:a)boolean
          b)if选择结构
          语法:if(条件表达式) { 
                    // 当“条件表达式”为true的时候执行
                }
                else {
                    // 当“条件表达式”为false的时候执行
                }

8.4.字符型,char类型

占用2个字节
常量:使用单引号包裹的一个字符,我们称之为字符常量。

8.5.字符串,String类型(后续会深入学习)

常量:使用双引号包裹的内容(可以是任意多个字符组成),我们称之为字符串常量。  
字符串和字符的关系
    就类似于羊肉串和羊肉的关系
    字符串 --> 羊肉串
    字符   --> 羊肉
字符串和别的数据类型做+运算,其实做的是拼接运算。
    String str = "hello world" + 30;
    System.out.println(str); // 输出:"hello world30"

9.字符是如何存储在内存中的???

Unicode编码,占2个字节,可允许有65536个字符,一个中文字符在内存中占用2个字节。      
Unicode编码的前128位和ASCII表码表一模一样。
    'a' -->97
    'A' -->65
    '1' -->49

6043719476ad144c3a74712ba7c78828.png

​ 字符存储

baadc3a3050bf24e6aa34bdb2d3621d6.png

​ ASCII

10.字符型和int类型的区别和联系

共同点:
    在内存中存储的都是整数!
不同点:
    1)字符型在内存中存储的是正整数,而int类型在内存中既可以存储负整数还可以存储正整数。
    2)char类型占用2个字节,int类型占用4个字节。
      char类型表数的数据范围小于int类型      
字符型和int类型相互转换
    字符型  --> int类型
        char c = 'a'; 
        int num = c; // 字符型转换为int类型,隐式类型转换
    int类型 --> 字符型
        char c = (char)97; // int类型转换为字符型,强制类型转换

11.常见的转义字符

t, 制表符,类似于按下tab键
n, 换行符,类似于按下enter键

", 展示的时候,只显示输出"
', 展示的时候,只显示输出'
, 展示的时候,只显示输出

使用方式:
    a)把转义字符直接放在字符串内部使用
        System.out.println("hellonworld");
    b)使用char类型配合来使用转义字符
        char c = 'n'; // 此处的 n 一定要看成是一个整体
        System.out.println("hello" + c + "world");
注意事项:
    使用char类型保存转义字符的时候,切记不要和int类型做+运算
        char c = 'n';
        System.out.println(11 + c + 11); // c变量从char类型会隐式转化为int类型
        输出的结果为32,而不是我们想要的两个11换行显示。

12.基本数据类型转换概述

1.1为什么需要数据类型转换???
    因为java是强类型语言,所以要求执行“赋值运算”和“算数运算”的
    时候,参与运算的数据类型必须保持一致。
1.2基本数据类型转换的方式有哪些???
    a)隐式类型转换,无需程序员手动处理
    b)强制类型转换,需要程序员手动处理  
1.3那么基本数据类型可以相互转换???
    除了boolean类型之外,其余的数据类型在内存中存储的都是数值。
    所以,除了boolean类型之外,其余的数据类型都可以相互转换。

13.隐式类型转换

原则:从低字节向高字节转换(提升)。
      byte --> short --> int --> long --> float --> double
      char --> int  
赋值运算:从低字节向高字节转换(提升)。
    特例:把int类型常量赋值给byte、short和char类型的变量时,
          属于自动类型转换的特例,只需不超出其表数范围即可。
            条件:a)int类型常量
                  b)不超出其表数范围
算数运算:
    如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。
    否则,如果其中一个操作数是float类型,另一个将会转换为float类型。
    否则,如果其中一个操作数是long类型,另一个会转换为long类型。
    否则,两个操作数都转换为int类型。
常见面试题: 
    1、byte b1 = 11; byte b2 = 12;byte sum = b1 + b2;  错误
            原因:两个byte类型运算之后的结果为int类型
       和int num1 = 100; int num2 = 300; int sum = num1 + num2;
            如何确定以上代码是对的???
                a)检查语法是否正确,编译
                b)检查逻辑是否正确,解释执行,运行时     
       哪一个正确呢?
    2、请问说出100000L*100000*100000 正确
       和100000*100000*100000 // 错误
       的区别?
    3、int num1 = 90000; int num2 = 90000; int total = num1 * num2; 
       请问total的结果是多少?
       不知道,因为81亿已经超出了int类型的表数范围,返回的结果是一个无意义的数

352b0a95ac2158d58951c9ca6139fb0f.png

隐式类型转换_赋值运算

8b699d3de3c063d26afc3b6d03de2b95.png

隐式类型转换_算数运算

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值