数据类型转换及定义方法和自增自减运算Day02

当数据类型不一样的变量发生计算时候会发生数据类型转换

自动类型转换(隐式

1.特点:代码不需要进行特殊处理,自动完成

2.规则:数据范围从小到大,与字节数不一定相关的(=的左边类型大于=右边的类型)

int x =50;
long y = 40;
float z = x + y;
System.out.println(z);----90.0

强制类型转换(强制)-了解

1.特点:代码需要进行特殊的格式处理,不能自动完成

2.格式:范围小的类型 范围小的变量名 = (范围小的变量名) 原本范围

JAVA中的=还有赋值的意思,将右边的数值赋值给=左侧大的数据

     转化的时候如果涉及到计算不能忘记小括号

       int x =50;
       byte y = 40;
byte z = (byte)(x + y);
  System.out.println(z);

 

数据溢出和数据类型转换的注意事项

1 强制类型一般不推荐使用,因为有可发生精度损失,数据溢出

2 byte short char这三种类型都可以发生数学运算例如 +

3 byte short char这三种类型运算的时候.都会被首先提升为int类型,然后再计算

4 boolean类型不能发生数据类型转换

char类型如果进行了计算,那么字符会按照一定的规则翻译成一个数字

一些字符类型的字符也可以参加计算的原因是因为字符在ASCII码表中有对应的固定的数值,中文汉字也有参照的表格UNICODE

ASCII:   A  =  65;   a  =  97;  0 = 45;(大小写字母之间相差32)

 

范围小的像范围大的提升

Byte--> short -->  char -->  int -->  long -->  float -->  double

2 4   1

四则运算中"+"有常见的三种用法

1 对于数值来说,那就是加法

2 对于字符char来说,在计算之前char会被提升为int,然后计算

char类型字符,和int类型数字,之间关系对照表ASCII

3 字符串相加 + 只能  =  进行拼接,不是在原来的基础上进行拼接而是生成了一个新的字符串

 

标识符:JAVA中没有实际含义的是自己取的名字(类名,方法名)-见名知意 驼峰命名

常量:程序运行期间不会改变的量

     分类-整数常量(int) 浮点数常量(double)字符串常量(String)字符常量(char)空常量(null)

     null:在JAVA中表空值

 

浮点数的类型都要比整数类型大

取模%是为了取余数  例如 (10 % 3 = 1)

 

自增自减运算

自增++

自减--

含义:让一个变量涨一个数字或者降一个数字,写在变量之前或者变量名之后

使用方式:单独使用或者混合使用

使用区别:单独使用的时候,前++和后++没有任何区别,完全一样的

 在混合使用的时候有重大区别

a:如果前++,立刻马上加1      [先加后用]

b:后++,先使用本来的数值再变量+1  [先用后加]

 

++

1 先进行自增

2 将自增结果拿出来

3将拿出来的值参与运算

++

1 先把值拿出来

2 再进行自增

3 将拿出来的值参与运算

   --,后--运算同理

注意:只有变量才能进行自增,自减运算,因为常量是不可变得

错误写法 30++

-----------------------------看视频

赋值运算:

1 基本赋值   =   代表将右侧的数值赋值给左侧

2 复合赋值   += a += 1 相当于  a=a+1

     -= b -+ 1 相当于  b=b-1

     *= c *= 1 相当于  c=c*1

     /= d /= 1 相当于  d=d/1

     %= e %= 1 相当于  e=e%1

比较运算符   ==(相等)   <  >  <=  >=  !=(不相等)

注意事项:1 比较运算符的结果一定是布尔值

     2 如果进行多次判断 不能连着写   错误演示  1< 2< 3----程序当中不允许这种写法

 

逻辑运算符   &&  与(并且):连接两个布尔值,全都是true,才能是true,否则就是false

     ||  或(或者):至少一个是true,就是true,全都是false才是false

     !   非(取反):本来是true变成false,本来是false变成true

&&  || 具有短路效果:根据左边的就已经可以判断得到的最终结果,那么右边的代码将不再执行,从而节省一定的性能

 

注意事项:

只能用于boolean值

或需要左右各自有一个boolean值,但是取反只要有唯一一个布尔值就可

与或两种运算符 如果有多个运算符,可以连续写

TIPS:  1 < 2 || 2 < 3

逻辑运算符也可以单个使用 |  &

区别:&&  || 一般称之为短路效果,左边满足一定条件时右边就不执行了

     &  |  不管左边结果是什么,右边都执行

实际开发的时候用短路的多一点,增加执行效率

共同点:结果都是一样的

 

三元运算符:

格式:  数据类型  变量名称 = 条件判断 ? 表达式A : 表达式B;

流程:首先判断条件是否成立,成立将表达式A给左侧变量,不成立将表达式B赋值给左侧变量二者选其一.

System.out.println( 3 > 4 ? 2 : 10)

注意事项:条件判断语句一定要有一个布尔类型的结果

表达式A和表达式B的类型一定要和等号左侧的类型保持一致

表达式A和表达式B 一定要有个结果,不能写输出语句

 

方法(方法的入门):

格式: publie static void 方法名称(){

方法体 ; }

方法名称的命名规则和变量一样,多个单词的时候使用小驼峰(getName)

一个单词的时候都要用小写(main)

方法体:也就是大括号当中可以包含任意条语句

注意事项:

1 方法定义的先后顺序无所谓

2 方法的定义不能产生嵌套包含关系(和其他方法是平级关系)-但要在同一个类中

3 方法定义好了之后不会执行的 .如果想要执行一定要进行方法的调用,一个方法调用格式method();调用成功

 

方法执行顺序:

1:规则.程序的主入口一定是main方法

2:一定是从main方法开始找

3:程序在main方法里面从上到下执行的.上面的代码没有执行完毕,下面的代码也是不会执行的

 

将代码定义成方法,不会提高代码的执行效率

但是1:代码的复用性-某个过程多次运行可以直接多次调用方法,不需要一遍又一遍的复制粘贴

    2:代码的可维护性-某个过程修改可以直接在方法中修改不需要一个个修改,一次修改多次使用

    -当代码出现了问题或者需求发生了变更的时候,我们尽量减少需要更改代码的地方

 

Jshell:

适合于轻量极其简单--在简单的代码中--测试一些特殊方法的使用的场景,是一个轻量级的帮助工具,可以省去定义类,定义方法,编译,运行的麻烦

进入 shell:

打开cmd窗口直接输入  jshell--回车enter-进入了jshell

可以直接在cmd窗口输入代码然后--回车(enter)--直接编译运行,输入一个代码--运行一次

退出jshell:  / exit--回车--退出jshell

 

小拓展:

如果赋值变量,在 = 右侧的范围超过左侧数据类型

1:对于byte short char三种类型来说,如果右侧赋值的数值没有超过范围

那么JAVA编译器将会自动隐含的为我们补上一个(byte)(char)(short)

1-如果右侧没有超过左侧类型范围 编译器补上强转

2-如果右侧超过左侧类型范围,

在给变量赋值的时候如果右侧的表达式当中全都是常量,没有任何变量

那么编译器JAVA将会直接将若干个常量表达式计算得到的结果--(先斩后奏)

右侧的常量结果数值没有超过范围,所以正确--这称为"编译器的常量优化"

注意,一旦表达式当中有变量参与,那么久不能进行这种优化了

变量 + 变量  

(byte)(char)(short)类型的变量在参与运算的时候,类型会自动提升为int

其他类型在运算的时候,会自动提升为范围大的类型

变量 + 常量

只要有变量存在,那么就跟变量+变量是一样的

常量+常量

出发常量优化机制

在编译的时候右边就已经是一个固定的数了

会看右边的数是否在左边的范围之中,如果在就强制转换;如果不在就报错

 

 

猜你喜欢

转载自blog.csdn.net/snack_tc_dora/article/details/80753541
今日推荐