Loading

2.数据类型转换、运算符、方法

数据类型转换
  Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换。
 
  当数据类型不一样时,将会发生数据类型转换
  数据类型变量名=(数据类型)被转数据值
 
自动类型转换(隐式
  1.特点:代码不需要进行特殊处理,自动完成
  2.规则:数据范围从小到大
 
浮点转成整数,直接取消小数点,可能造成数据损失精度
int强制转成short砍掉2个字节,可能造成数据丢失
 
强制类型转换(显式)
  1.特点:代码需要进行特殊处理,不能自动完成
  2.规则:范围小的类型/范围小的变量名 = (范围小的类型)原本范围大的数据
 
 
 
 
注意事项:
  1.数据类型转换一般不推荐强制类型转换,可能会造成数据益处、精度损失
  2.byte/short/char这三个数据类型都可以发生数学运算
  3.byte/short/char在进行运算的时候都会被提升为int类型再进行运算
  4.boolean类型不能发生数据类型转换
 
 
 
 
ASCll编码表
  在计算机的内部都是二进制的0、1数据,如何让计算机可以直接识别人类文字的问题呢?就产生出了编码表的概念。编码表:就是将人类的文字和一个十进制数进行对应起来组成一张表格
字符中文、英文、数字 + 0 运算 可以输出当前字符ascll码代表的数字
 
运算符
  运算符:进行特定操作的符号 + - * /
  表达式:用运算符连接起来的式子叫做 表达式,例如 20+5 / a+b
 
算数运算符
四则运算:加法、减法、乘法、除法(+、-、*、/)
取模运算:%(取余)
  对于一个整数的表达式来说,除法用的是整除,整数除以整数,结果依然是整数,只看商,不看余数
  运算当中有不同的数据类型,那么结果将是数据范围大的类型
 
+号
  对于数值来说,姐是加法
  对于字符char类型来说,在计算之前,char会被提升为int,再进行计算
  对于字符次String,来说,加号代表字符串拼接
  任何数据类型和字符串进行连接的时候,结果都会变成字符串
 
自增/自减运算符
  自增运算符:++ 让一个变量增加数字1
  自减运算符:-- 让一个变量减去数字1
  使用格式: num++; / 。 num--;
  使用方式:
  单独使用:不和其他任何操作混合,自己独立成为一个步骤
  混合使用:和其他操作混合,例如复制混合或者打印操作混合等
  使用区别:
  单独使用:在单独使用的时候,前++和后++ 没有任何区别,例如 num++ 和num-- 是完全一样的
  混合使用:如果是前++,那么变量立刻+1,然后拿着结果进行使用(先加后用 )
  如果是后++,那么首先使用变量本来的数值,然后在让变量+1(先用后加)
 
--逻辑同++逻辑
  只有变量才可以使用自增/自减运算,常量不可以发生改变所以不可用
 
 
 
赋值运算符
赋值运算符分为:
  基本赋值运算符:就是一个等号“=”,代表将右侧的数值交给左侧的变量
  例如 int a = 7;
  复合赋值运算符:
  += a += 1 相当于 a = a + 1
  -= a -= 1 相当于 a = a - 1
  *= a *= 1 相当于 a = a * 1
  /= a /= 1 相当于 a = a / 1
  %= a %= 1 相当于 a = a %1
  只有变量才能使用赋值运算符
  复合赋值运算符其中隐含了一个强制类型转换
 
 
比较运算符
逻辑运算符
短路:与"&&"和或"||",具有短路效果,如果根据左边已经可以得到最终结果,那么右边的代码不再执行,从而节省部分性能
逻辑运算符只能用于boolean值
与、或需要左右各自有一个boolean值,但是取反只要有唯一的一个boolean值即可
与、或两种运算符,如果有多个条件,可以连续写
 
三元运算符
 
  一元运算符: 只需要一个数据就可以进行操作的运算符,例如 !、++、--
  二元运算符: 需要两个数据才可以进行操作的运算符,例如 加法 a+1、赋值 a=1
  三元运算符: 需要三个数据才可以操作的运算符
  格式: 数据类型 变量名称 = 条件判断 ? 表达式A :表达式B;
  流程: 首先判断条件是否成立
  如果成立为true,那么可以将表达式A的赋值给左侧的变量
  如果不成立为false,那么将表达式B的值赋值给左侧的变量
 
  必须同时保证表达式A和表达式B都符合左侧数据类型要求
  三元运算符的结果必须被使用,要么赋值给变量,要么被输出

 

 

 
 
方法
 
方法:就是将一个功能抽取出来,把代码单独定义在一个大括号内,形成一个单独的功能。当我们需要这个功能的时候,就可以去调用。这样即实现了代码的复用性,也解决了代码冗余的现象
 
方法的定义
格式:
 
public static void 方法名称(){
方法体(也就是大括号当中可以包含任意语句)
}
定义的格式解释:
  修饰符:目前固定写法public static
  返回值类型:目前固定写法void
  方法名:为我们定义的方法起名,满足标识符的规范,用来调用方法
参数列表
  return:方法结束。因为返回值类型是void,方法大括号内的return可以不写
  注意事项:
  方法的定义不能产生嵌套包含关系
  方法定义和了之后不会执行,如果想要执行,需要进行调用
 
方法的调用:在程序入口main方法里面调用
public static . void . main(String[]args){
方法名();
例如:name();
}
方法必须定义在一类中方法外方法不能定义在另一个方法的里面
 
 
JSheel
 
  JShell脚本工具是JDK9及以后版本的新特性,当我们编写的代码非常少的时候,而又不愿意编写类,main方法,也不愿意去编译和运行,这个时候可以使用JShell工具。启动JShell工具,在          命令行直接输入JShell命令
 
  可以编写Java代码,无需写类和方法,直接写方法中的代码即可,同时无需编译和运行,直接回车即可执行,相当于python的命令行
 
编译器扩展
  对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过范围,那么javac编译器将自动隐含的为我们进行强制转换,如果右侧超过了左侧范围,那么编译器报错
 
  在给变量进行复制的时候,如果右侧的表达式当中全都是常量,没有任何变量,那么编译器javac将直接将若干个长了表达式计算得到结果,称为编译器的常量优化,一单表达式中有变量参        与,就不能进行这种优化

posted @ 2020-11-24 00:40  木子七  阅读(120)  评论(0编辑  收藏  举报