02 类型转换、进制、运算符
lix_uan 625 1

单字符类型

转义字符

\n:换行
\r:回车 
\t:Tab键
\\:\
\":"
\':'
\b:删除键Backspace

字符和字符串

char c = '尚';
String s = '尚';//错误的,哪怕是一个字符,也要使用双引号

char c2 = '';//错误,单引号中有且只能有一个字符
String s2 = "";//可以,双引号中可以没有其他字符,表示是空字符串

ASCII编码

字符 数值
0 48
A 65
a 97

进制

  • 二进制:0b开头
  • 八进制:0开头
  • 十六进制:0x开头

十进制转二进制

02 类型转换、进制、运算符

二进制转十进制

02 类型转换、进制、运算符

转换关系

  • 8 bit = 1 Byte

  • 1024 Byte = 1 KB

  • 1024 KB = 1 MB

  • 1024 MB = 1 GB

  • 1024 GB = 1 TB

基本数据类型转换

自动转换

02 类型转换、进制、运算符

强制类型转换

int i = (int)3.14;//强制类型转换,损失精度

double d = 1.2;
int num = (int)d;//损失精度

int i = 200;
byte b = (byte)i;//溢出

特殊类型的强制转换

  • 任意数据类型的数据与String类型进行“+”运算时,结果一定是String类型

    System.out.println("" + 1 + 2);//12
  • 但是String类型不能通过强制类型()转换,转为其他的类型

    String str = "123";
    int num = (int)str;//错误的
    int num = Integer.parseInt(str);//借助包装类的方法才能转

运算符

+ 的两种用法

  • 两边都是数值的话,+就是加法的意思
  • 两边至少有一边是字符串得话,+就是拼接的意思

i++ 和 ++i

  • ++在前,先自加,后使用
  • ++在后,先使用,后自加

案例1

public class LogicExer1{
    public static void main(String[] args){
        int x = 1;
        int y = 1;

        //x==2 ,x++  false  x = 2 左边为false
        //右边继续
        //++y  y==2  y=2  y==2成立  右边为true
        //false & true 结果false
        if(x++==2 & ++y==2){
            x =7;
        }
        System.out.println("x="+x+",y="+y);//x=2,y=2
    }
}
public class LogicExer2{
    public static void main(String[] args){
        int x = 1,y = 1;

        //x==2,x++  左边条件为false,x=2
        //因为短路与,右边不算
        //false && ? 结果是false
        if(x++==2 && ++y==2){
            x =7;
        }
        System.out.println("x="+x+",y="+y);//x=2,y=1
    }
}
public class LogicExer3{
    public static void main(String[] args){
        int x = 1,y = 1;

        //x==1,x++  左边为true,x=2
        //因为是逻辑与,右边继续  
        //++y, y==1  y=2 右边为false
        //条件true | false,最终为true
        if(x++==1 | ++y==1){
            x =7;
        }
        System.out.println("x="+x+",y="+y);//x=7,y=2
    }
}    
public class LogicExer4{
    public static void main(String[] args){
        int x = 1,y = 1;

        //x==1,x++  左边为true,x=2
        //因为是短路或,左边为true,右边就不看了
        //整个条件为true
        if(x++==1 || ++y==1){
            x =7;
        }
        System.out.println("x="+x+",y="+y);//x=7,y=1

    }
}

案例2

public class LogicExer5{
    public static void main (String []  args)  {
        boolean x = true;
        boolean y = false;
        short z = 42;

        if((z++==42)&&(y==true))    z++; //z=43

        if((x=false) || (++z==45))  z++; //false || false = false

        System. out.println("z="+z);//44
    }
}
class  Test4_2  {
    public static void main (String []  args)  {
        boolean x = true;
        boolean y = true;
        short z = 42;

        if(y=true){
            if((z++==42)&&(y==true)){
                z++; //z=44
            }
        }
        if((x=false) || (++z==45)){
            z++;
        }
        System. out.println("z="+z);//46
    }
}

案例:获取一个四位数的个、十、百、千位

public class Test01 {
    public static void main (String [] args) {
        int num = 1234;
        int ge = num % 10;
        int shi = num / 10 % 10;
        int bai = num / 100 % 10;
        int qian = num / 1000 % 10;

        System.out.println(num + "个位上的数字是:" + ge);
        System.out.println(num + "十位上的数字是:" + shi);
        System.out.println(num + "百位上的数字是:" + bai);
        System.out.println(num + "千位上的数字是:" + qian);
    }
}

&& 和 &

  • 左边为false,则右边就不看

|| 和 |

  • 左边为true,则右边就不看

^(异或)

  • 相同为false,不同为true

<<

  • 左移几位就相当于乘以2的几次方

>>

  • 右移几位就相当于除以2的几次方

>>>

  • 往右移动后,左边空出来的位直接补0,不看符号位

三元运算符

public static void main(String[] args) {
    int i = (1==2 ? 100 : 200);
    System.out.println(i);//200
    int j = (3<=4 ? 500 : 600);
    System.out.println(j);//500
}
评论区

索引目录