java基本语法<2>——数据类型转换,运算符

1.数据类型转换

1>.自动类型转换(隐式)

        ❶特点:代码不需要经过特殊处理,自动完成。

        ❷规则:要求数据范围从小到大转换

  ▨注意:什么是从小范围变成大范围?——等号的左边是大范围,等号右边是小范围,因为等号是“赋值”的意思,比如a=x,意思是把x赋值给a,同理 大范围变量名=小范围变量的数据 就是把小范围变量数据变成大范围;别弄混了!

public class ZiDongZhuanHuan{
    public static void main(String[] args){
        int a=23L;
        System.out.println(a);//这个是把long给int,是大变小,不可以;出错
        
    ☑  long b=23;
        System.out.println(b);   //这个是把int型赋值给long,所以这个是小变大

        long c=9999999999;
        System.out.println(c); //这个会出错,你这个超过了int型

        int d=999999999L;
        Systerm.out.println(d);  //这个会出错

    }
}

2>.强制类型转换(显式)

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

        ❷格式:范围小的类型  范围小的类型名=(范围小的类型)原本范围大的数据

                        例: int a=(int)1223L;

                                int a=(int)(m+n);(不能产生歧义,产生时,注意加括号)

public class QiangZhi{
    public static void main(String[] args){
    
    ☑int a=(int)100L;
    System.out.println(a);  //这个是范本,打印出100

    
    int b=(int)99999999999L;  
    System.out.println(b);        //这个不会显示错误,但是结果为-727379969
                                //这个是数据溢出的现象

    int c=(int)3.99;
    System.out.println(c);    //这个不会显示错误,但是结果为3
                             //这个是降低数据的精确度,但是不是四舍五入!是直接去小数点

    char d=A;
    System.out.println(d+1);    //这个会打印出来“66” 因为首先他会转化换成int型,变成65                                        
                                   (来源于ASCII)然后变成66

    byte x=3;
    byte y=4;
    byte z=x+y;
    System.out.println(z);       //结果显示错误,因为数学运算时,首先换成了int型,            
                                  3+4=7,虽然没有超过byte的范围,但是是int变成了byte, 
                                   属于强制转换,所以其格式不正确。

    byte x=3;
    byte y=4;
    int z=x+y     //正确显示7;这里也可以写成byte z=(byte)(x+y)"注意这里括号别拉下!"
    System.out.println(z);


    byte m=3;
    char n=A;
    int q=m+n;
    System.out.println(q);      //正确显示68  不管是这三类怎么做运算,最后都会变成int
}

}

▨注意事项:1.强制类型转换一般不推荐使用,因为可能会出现精度损失、数据溢出的现象; 

                     2. byte/short/char 这三个数据类型都可以进行数学运算,如加法

                     3.byte/short/char 这三个数据进行数学运算的时候都会首先变成int 型,然后再计算

                     4.boolean类型不可以发生类型转换!

                     5.byte/short/char这三类数据进行强制类型转换时,如果右面的数据还在左面的范围之内,那系统也不会报错,他会自动的加上小括号,进行自动的隐含性强制类型转换;(但是注意自动的转换也仅限于右面是常量类型)

比如short a=12;12默认是int型,int—>short属于强制类型转换,但是你的代码并没有写成short a=(short)12,这时系统会自动加上括号,但是仅限于这三个类型!其余的会报错

public class ZhuanHuan{
    public static void main(String[] args){
        short a=2;    //自动的强制类型转换
        short b=3;
        short c=a+b;  //这种代码出现会出现报错,这个虽然也属于int到short,但是右面是变量形式!
        short d=2+3;    //这个就是正确的写法,这个右面是常量,可以自动转换
        short e=2+3+a    //报错,只要有变量就不行!   
 }
}


2.算术运算符

1>.运算符:进行特定操作的符号。例如:+

2>.表达式:用运算符连起来的式子叫做表达式。例如:2+76;a+b;

3>.算术运算符:加“+”;减“-”;乘“*”;除“/”;取模“%”;自行运算“++”“--”

▨注意:

             1.对于除法“/”,注意结果的数据类型,如果不能整除的话,就写成商和余数的形式,然后再取商的部分;例如“3/2=1”       

            2.注意乘除法的写法;       

            3.一旦运算中存在不同类型的时候,结果的类型和范围较大的类型一致!电脑实际的操作是先把小类型自动转换成大类型,然后进行运算)  

public class SuanShuYunSuan{
    public static void main(String[] args){
        int a=5;
        float b=2.5;
        System.out.println(a/b);
    }
}                        //结果2.0,因为float的范围比较大,所以结果也是float型
                        //int——>float;——>float/float

 四则运算中加号“+”三种常见的用法 :

        1.对于数值来说,即为正常的加法;

     ▧   2.对于字符char类型来说,在计算之前,char类型会变成int型,然后再计算 ;利用ASCII表对照;

     ▧   3. 对于字符串String来说,加号代表字符串连接操作任何数据类型和字符串连接都会变成字符串。(任何类型+String字符串···===>字符串)

public class JiaFaZiFuChuan{
    pubilc static void main(String[] args){

         String a="Hello";
         System.out.println(a);    //打印出来是 Hello

         System.out.println(a+"world");    //打印出来是 Helloworld
        
         System.out.println(a+20);         //打印出来 Hello20
    
//下面是注意优先级!

         System.out.println(a+20+30);      //打印出来Hello2030,不是Hello50!
         
         System.out.println(a+(20+30));     //打印Hello50

         System.out.println(20+30+a);        //打印出来Hello50

         System.out.println(20+3.9+a);        //打印出来23.9Hello
 }
}

自增自减运算:

                格式:自增运算:“++”;自减运算“--”

        ❶基本含义:让一个变量涨1或者降1;常量不可以使用!

        ❷使用格式:在变量名之前,即++i;在变量名之后,i++;

        ❸使用方法:1.单独使用:不和其他任何操作混合,自己独立成为一个步骤;

                             2.混合使用:和其他操作混合,例如与赋值混合,或者与打印操作混合等

                使用区别:1.单独使用时,"i++"  <=>  "++i"

                                  2.混合使用时:   

                                  ▧A.对于【++i】,那么变量【立刻+1】,然后拿着结果使用                                                    ▧B.对于【i++】,那么首先使用变量本来的值,【然后再让变量+1】  

public class QiangZhi{
	public static void main (String[] args){

//单独使用的,即单独成行
	int a=1;
	int b=1;
	a++;
	++b;
	System.out.println(a);    //打印2
	System.out.println(b);    //打印2  这里单独使用时i++=++i
	
//混合使用时,i++是先使用再加;++i是先加再使用
  //赋值运算中
	int c=1;
    int f=1;
	int d;
	int e;
	d=c++;
	e=++f;
	System.out.println(d);    //d=c++是先使用再加;即d=c原=1
	System.out.println(c);    //这里已经完成了c++,所以变成2
    System.out.println(e);    //e=++f,是结果先加后运算,所以e=f后=2
 
  //打印运行时	
    int x=1;
    System.out.println(++x);    //打印出2
    System.out.println(x);      //打印2
    
    int y=1;
    System.out.println(y++);    //打印出y原1,然后y变成了2
    System.out.println(y);      //这里就是2了
}
}


赋值运算符

       ❶基本赋值运算符:就是一个等号“=”,代表将右侧的数据交给左边的变量;

       ❷复合赋值运算符:

     +=                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

注意事项:1.只有变量才能使用赋值运算符,常量不能进行;

                  2.复合赋值运算其中隐含了一个强制类型转换;比如

public class a{
    public static void main(String[] args){
        byte a=30;
        System.out.println(++a);    
/*这里就是同上强制类型转换,byte/short/char进行数学运算时,都是强制转换成int*/
    }
}


比较运算符——true or false

比较运算符
==比较符号两边的数据是否相等,相等的结果是true
<比较符号的数据是否小于右边的数据,如果小于,结果是true
>比较符号的数据是否大于右边的数据,如果大于,结果是true
<=、、、、、是否小于等于、、、、、
>=、、、、、是否大于等于、、、、、
!=不等于符号,如果符号两边的数据不相等,结果为true

▲比较运算符,是两个数据之间进行比较,运算结果是布尔值true或者false;

注意事项:

        1.比较运算符的结果一定是一个Boolean值,成立就是true,不成立就是false;

        2.如果进行多次判断,不能连着写;就是说不可以写成【1<2<3】这样的形式;

public class BiJiao{
    public static void main(String[] args){
        int a=1;
        int b=4;
        System.out.println(a>b);    //结果false
        System.out.println(a>11);    //false
        System.out.println(a!=b);    //true
        System.out.println(a==1);    //true
        System.out.println(0<a<2);    //不能打印,写法错误,报错
    }
}


逻辑运算符——true or false

与(并且)&&一错则错
或(或者)||一对则对
非(取反)对错互换

注意:&和&&的区别:

&:这个是让两者换成二进制,然后按照“一0则0”的理念进行运算;最后的结果是一个二进制的数

&&:这个是看两边的数据的真伪,按照“一假则假”的理念进行输出,最后的结果是布尔类型,不是“true”就是“”“false”

public class FuZhi{
	public static void main(String[] args){
	  int a=2;
	  int b=6;
	  System.out.println(a&b);  //结果是“2”就是“0010”,因为“0010&0110——>0010”
	  System.out.println(a>2&&b<8); //结果是false,因为a>2是假,所以结果为false
	  System.out.println(a&&b);//报错,这个没有办法判断&&两边的是真是假。
    
      System.out.println(!a>2);//结果为true,因为a>2为假,取反为真;
      
      System.out.println(a>2||b<8);//结果为true,因为b<8是真,所以为真
    }
}

★★★★★注意:逻辑运算“与&&”、“或||”都有“短路效果”,就是说当可以根据左边来判断最终结果的时候,是不需要执行右边的条件的

注意:

1,逻辑运算只能用于Boolean值。

2.与、或需要左右各自有一个Boolean值,但是取反的时候有一个即可。

3.与、或两种运算符,如果多个条件,可以连续写!(比较运算是不可以的,即不可以1<2<3)

        两个条件:A&&B        三个条件:A&&B&&C

        因此,对于1<x<3的情况,应该拆成两个部分,然后用&&连接起来(x>1&&x<3)



 三元运算符

一元运算:只需要一个数据就可以进行操作的运算。例:!++ --

二元运算:需要两个数据····

三元运算符:需要三个数据才能进行的操作

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

解释:首先判断条件是否成立;如果条件成立,就把A赋值给变量;如果条件不成立,就把B赋值给变量;二者选其一。

注意:1.必须同时保证表达式A和表达式B都符合左侧的数据类型

           2. 三元运算符结果必须被使用



补充:

1.按位异或:

 2.左右移动和关于2的乘除法相比,左右移动的效率更高

 

 

 

3.>>>和>>的区别

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值