java基础学习笔记——day04(数据类型转换、常量、运算符)未完待续ing……

java基础学习笔记——day04

1. 类型转换

1.1 含义

  • 在java中各个数据类型之间是可以互相转换的,我们将类型转换分为两种,一种称之为 自动转换 , 强制 转换 。

1.2 自动转换

  • 类数据型之间可以进行自动转换
  • 数值之间在进行四则运算时,数据类型会自动向大类型靠拢
  • 通过各类型的储存空间来判断类型的大小
  • 顺序: byte->short->int->long>float->double
  • boolean类型不能进行转换
byte a = 10//a是byte类型
int b = a;//将byte类型的a赋值给int类型的b
System.out.println("b="+b);//能正常输出结果   b=10    

注意: 将一个float的值赋给double的时候,会出现误差

double a = 3*12+3.3F;
System.out.println("a="+a)//结果是   a=39.29999923706055

1.3 强制类型转换

  • 大类型变量要转化为小类型,就需要强制转换

格式: 小类型 = (小类型)大类型

int num = 10byte a =byte)num;

注意:强制转换有可能造成数据错误,不推荐使用。

int num =129byte a =byte)num;
System.out.println("a="+a)//输出结果是  a=-127
  • 129-> 0000 0000 0000 0000 0000 0000 1000 0001
  • -> byte 1个字节 1000 0001
  • -> 符号位是1 所以是负数 所有的数据都是补码存储 原码展示
  • -> 1000 0001-> (反) 1000 0000 -> 原码 1111 1111 -> -127

2. 常量

2.1什么是常量

  • 常量就是程序运行期间其值不能改变的量

2.2 常量的定义方式

  • 通过 final 修饰的变量就是常量,也叫做最终变量
final int num = 10 ;//

2.3 常量的命名规则

  • 所有的字母均大写,单词之间通过 _(下划线)分割
final  int STUDENT_NUM = 10 ;

3. 运算符

3.1 基本概念

  • 运算符就是用来进行运算的符号

  • 运算符左右的内容称之为操作数,通过运算符旁边操作数的个数判断该运算符是几元(目)运算符

    • 一元(目)运算符:运算符左右两边只有一个操作数
    • 二元(目)运算符:运算符左右两边有两个操作数
    • 三元(目)运算符:运算符左右两边有三个个操作数
  • 目前最多只有三元运算符,而且只有一个: ? :

3.2 运算符的分类

  1. 算数运算符:+ - * / % ++ –
  2. 关系运算符:> < >= <= != == intstanceOf
  3. 逻辑运算符: & | ! ^ && ||
  4. 赋值运算符: =
  5. 位运算符: & | ^ >> << <<< !
  6. 条件运算符: ? :
  7. 拓展运算符: += -= *= /= %= >>= <<= ^= !=
i. 赋值运算符
  • = 进行赋值预算,并且是自右向左进行运算,将右侧的值赋给左侧的变量进行存储
int num = 10; //将右侧的10赋给 = 左侧的变量num
ii. 算数运算符
  • +号:双目运算符
    1. 做为正号: +10 +12
    2. 做为加号: 1+1 5+2
    3. 做为连接符: “你好”+“中国”
int num = +10//做为正号
mum = 5+2//做为加号
System.out.println("你好"+"中国");    
  • -号:双目运算符
    1. 做为负号: -10 -12
    2. 做为减号: 5-2
int num = -10//这是负号
num = 5-2//这是减号
  • / * % :双目运算符
int num = 5/2//除号
    num = 5*2//乘号
    num = num%10//取余
  • ++ --:单目运算符
int num = 10,num1=0,num2=0,num3=0,num4=0;
num1=num++; //运算前num=10,num1=0运算后num=11,num1=10
num2=num1--;//运算前num1=11,num2=0运算后num1=10,num2=11
num3=++num2;//运算前num2=12,num3=0运算后num2=12,num3=12
num4=--num3;//运算前num3=11,num4=0运算后num3=11,num4=11
  • 注意事项:
    1. ++ 运算符 是在原来变量的基础上自增
    2. – 运算符 是在原来变量的基础上自减1
    3. ++ – 在前面,先加一,再运算
    4. ++ – 在后面,先运算,再加一
    5. 如不理解,请参考上面的例子
iii.关系运算符
  • < >= <= != == intstanceOf(现在不学)

  • 注意事项

    1. 关系运算符的结果一定是一个boolean值 (true、false)
    2. !== == 既可以比较基本数据类型,也可以比较引用类型
    3. < >= <= 只能比较基本数据类型(boolean除外)
boolean flag = 4>10;        
System.out.println(flag);//输出结果是:  false
System.out.println("abc"=="abc");//输出结果是: true
iv 逻辑运算符
  • & | ! ^ && ||

    1. &和&& 左右两边的操作数都为true,其结果才为true。
    2. |和||左右两边的操作数有一个为true,其结果就为true。
    3. ^ 左右两边的操作数相同为false,不同为true。
    4. !取反,true->false false->true
  • 注意事项

    1. 逻辑运算符左右变量的操作数有且只能是boolean类型的值
    2. 。当 & ^ | 左右两边的操作数不是boolean类型,是数值型时要注意,此时& | ^ 不是逻辑运算符而是 位运算符。
    3. && || 有短路功能,所以多数情况都是用 && || 而不是& |
    • &&当左边第一个操作数为false的情况下不会对第二个操作数进行运算,因为结果一定 为false。
    • ||当左边第一个操作数为true的情况下不会对第二个操作数进行运算,因为结果一定为 true
System.out.println("测试逻辑&运算符"); //两别都为treu才为true
System.out.println(true&true);  
System.out.println(true&false);
System.out.println(false&true); 
System.out.println(false&false); 
//结果是 true false false false 
System.out.println("测试逻辑&&运算符"); //两别都为treu才为true 
System.out.println(true&&true);  
System.out.println(true&&false);  
System.out.println(false&&true); 
System.out.println(false&&false); 
//结果是 true false false false 
System.out.println("测试逻辑|运算符");
System.out.println(true|true);//只要有一边是ture就为true
System.out.println(true|false);
System.out.println(false|true); 
System.out.println(false|false); 
//结果是 true true true false 
System.out.println("测试逻辑||运算符"); 
System.out.println(true||true);//**只要有一边是ture就为true**  
System.out.println(true||false); 
System.out.println(false||true); 
System.out.println(false||false); 
//结果是 true true true false
System.out.println("测试逻辑!运算符"); 
System.out.println(!true);  //取反
System.out.println(!false); 
//结果是 false  true
System.out.println("测试逻辑^运算符");  
System.out.println(true^true); //相同为fasle 不同为true
System.out.println(true^false);  
System.out.println(false^true);   
System.out.println(false^false); 
//结果是 false true true false
v. 条件运算符
  • ? : 这是唯一一个三目运算符

**语法规则:**表达式1 ? 表达式2 **:**表达式3

含义:

  • 如果表达式1的值为true,则结果为表达式2的值

  • 如果表达式1的值为true,则结果为表达式2的值

String str = 10>1?"1表达式1正确":"表达式2正确";
//结果是:  表达式1正确
int num =10>20?10:20;\
//结果是:  20
vi. 拓展运算符
  • *+= -= = /= %= >>= <<= ^= !=

  • 其实本质上就是算数运算符和位运算符+赋值运算符的一个结合体。

    • num+=10;就是 num=num+10;
    • num/=10;就是 num=num/10;
    • 以此类推……
int num = 10;
num+=10//其实就是num=num+10;

扩展运算符的优缺点分析:

  • 优点

    • 提高了编写的速度
    • 提高程序了编译的速度
    • 自动进行类型的强制转换(但有风险)
  • 缺点

    • 不利于阅读
    • 自动强制转换可能会让最后的计算结果有误
vii. 位运算符

未完待续……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值