Java学习

 

目录

一、赋值

二、运算

三、字符串

  四、运算符

1.算术运算符(% += ++)

2.关系运算符 (==)

3.逻辑运算符(&& &)

4.位运算符(& | ~ ^)

5.移位运算符(<< >>>)

6.条件运算符(表达式1?表达式2:表达式3)


一、赋值

赋值表达式,左边一定是变量,右边是 变量或者数值变量与数值 都有类型,(数值里整数默认int,小数默认double)

  • 类型由小转大,存储空间变大,数据不会丢失,是安全的,在需要时 编译器会自动完成转化隐式类型转化
  • 类型由大转小,存储空间变小,数据可能会丢失(丢字节),不安全编译器不会自动完成转化,需要用户 手动完成转化显式类型转化(强制类型转化)

赋值时,左右两边类型 一定要相同,最开始不相同的 通过隐式类型转化 或强制类型转化 转化成相同类型后 才能完成赋值,如果没有完成 同类型转化,编译器会报错

右边数值来赋时:

编译器会对数值大小 进行检查,数值大小 如果在左变量存储大小之内 够大,说明数值类型转化为此类型后 数值是不会丢失数据 装得下 是安全的,编译器会 自动完成 隐式类型转化,如果数值大小 超过了左变量存储大小,此变量装不下此数据,转此变量类型 一定会丢失数据,编译器不会自动完成转化,需要 手动强制类型转化 才可赋值

右边变量来赋时:

如果右变量存储大小 小于左变量存储大小,编译器会自动完成 隐式类型转换赋值;如果右变量存储大小 大于左变量存储大小,需要强制类型转换后 才可赋值

右边数值来赋值时,数值由默认的int类型 隐式转换为 byte类型时,类型由大转小,不会丢失数据?

  1. 数值的大小是确定的,最后有没有丢失数据 直接由数值大小来看的,不由它所属的类型来看
  2. 数值转换的判断 是基于确定的数值大小的,int隐式转换为byte时 就说明此int类型的数值此时的值 小于byte类型的存储范围,(不一定说数值所属的范围大 数值就大,比如long类型的数值可以是1),隐式转换时 是安全的,它是由数值的大小 直接确定安全转换的
  3. 所以 大类型转小类型 不一定会丢失数据,具体要看里面的数值 是否大,赋到的空间 是否够大,所以数值来赋时,编译器是可以直接判断的,不拘于 只能小类型赋到大类型,而如果变量来赋的话,编译器无法判断 变量里面具体放多大的值,值无法确定,所以拘于 只能小类型赋大类型 确保安全


二、运算

 不同类型的数据 一起运算时,数据类型小的 会转换成数据类型大的 成同类型运算

最后进行的 同类型运算 至少是要在 4字节类型下的运算,比如byte与short 或byte与byte之间的运算,小的类型转成 和大的同类型后 还是小于4字节,会都被提升为 4字节运算

三、字符串

在C语言中,字符串 用指针变量或字符数组变量 来存放,没有专门的字符串变量,而Java中用String类型 专门存放字符串变量,属于 引用数据类型


String.valveOf(a)任意类型数据 转化为字符串

数据+"字符串"+数据:数据与字符串拼接,拼接成新字符串

+号是将两边的结果连接成字符串


字符串转化为整型数据

Integer.valveOf:将int或字符串 转换为Integer对象

Integer.parseInt:将字符串 解析为int基本数据类型


  四、运算符

1.算术运算符(% += ++)

左右两边是数值,组成算术表达式,表达式整体结果是数值

%

当余数绝对值 小于除数绝对值时 便停下,此时的余数 便是取模的结果

11.5%2 == 1.5,-10%-3 == -1:

+=

+=时 如果左右两边类型不一样 运算符会帮我们直接强转


2.关系运算符 (==)

左右两边是数值,组成关系表达式,表达式整体结果是 boolean类型值

条件判断表达式的总结果 一定是true或false

if(布尔)、while(布尔)、for(i = 0;布尔;i++)


3.逻辑运算符(&& &)

左右两边是boolean类型值(关系表达式),组成逻辑表达式,表达式整体结果是 boolean类型值

  • &&逻辑与 有短路效果:当第一个表达式为假时 直接判断此逻辑表达式为false,第二个表达式就不去判断执行了
  • ||逻辑或 有短路效果:当第一个表达式为真时,第二个表达式 就不去执行判断了,逻辑表达式总结果为true
  • &、| 无短路效果,两边两个表达式 一定都会去执行

4.位运算符(& | ~ ^)

左右两边是数值,组成 位运算表达式,表达式整体结构是 数值

位运算符都是 对数值二进制补码 操作

按位异或^:相同为0,不同为1,n^n=0,0^n=n

按位与&:n&1 得到该数二进制序列的 最后一位(0或1)  

按位与&:n&(n-1),每与一次,表达式结果 相比n的二进制序列 都会少个1 


5.移位运算符(<< >>>)

一边是 移位对象数值,一边是 整型移动位数,组成 移位运算表达式,表达式整体结果是 数值

移位操作对象是 数值二进制补码一端掉,一端补

<<,左移n位,左端不要了 右端补n个0,效果是*2^n

>>,右移n位,右端不要了 左端补n个符号位,效果是/2^n

>>>,视为 无符号数 并右移,左端全补0,结果一定是正数(可能变成一个很大的正数)

(无<<<)


6.条件运算符(表达式1?表达式2:表达式3)

按 第一个表达式1 结果true或false 选择执行后面的 表达式2或表达式3,最后 整个三目表达式的结果是 执行其中一个表达式 结果的 数值

(Java中唯一的条件运算符、唯一的三目运算符)

第一个表达式的结果 必须是boolean类型的值

是值 就必须得来接收:

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值