Java运算符 day3

小数

public class Demo03{ 
    public static void main(String[] args){ 
        //声明一个小数 
        double d = 3.12; 
        System.out.println(10/3.0); 
        //声明一个小数 
        float f = 3.12F; 
        System.out.println(f); 
        double num = 0.3; 
        System.out.println(num==(0.1+0.2));

        //System.out.println(10/0); 
        System.out.println(10/0.0); 
        System.out.println(-10/0.0); 
        System.out.println(-0.0/-0.0==0.0/0.0);// NaN非数 一个自己和自己不相等

    } 
}

Tips:

计算机存储小数是一个近似值。 
小数:
双精度: 符号   精确程度          空间
       double 小数点后15-16位  8字节
单精度: 符号   精确程度          空间
       float  小数点后6-7位    4字节
java中的小数默认类型是double,当把一个double类型的字面值 
赋值给float变量存放的时候,要在字面值后加"F""f" 
System.out.println(10/0.0); 正无穷 
System.out.println(-10/0.0);负无穷 
System.out.println(-0.0/-0.0==0.0/0.0);NaN
 
赋值
小数的赋值方式: 
        正常赋值:(最常用) 
            double d = 12.12;         
科学计数法: 
            数值E/e 整数 

代码
public class Demo02{ 
    public static void main(String[] args){         // 正常赋值小数 
        double d = 12.1; 
        //d = .5; 
        d = 0.000314; 
        System.out.println("d的值是:"+d); 
        //通过科学计数法给d重新赋值 
        d = 3.14E-4; 
        System.out.println("d的值是:"+d); 
         
    } 
}

逻辑型

/*   
    java规范  编写代码过程中要遵守的 
    jvm规范  虚拟机规范 hotspot  boolean类型存储还是1和0 

    逻辑型 (布尔型) 
        符号              所占空间                    范围 
        boolean   1位(实际存储的是1个字节)            true/false 
     
    boolean 类型的变量不能参与四则运算 
     
    适用场景: 
        逻辑判定,流程控制中有大用 
*/ 
public class Demo03{ 
    public static void main(String[] args){ 
        //声明一个boolean类型的变量 
        boolean flag = true; 
        System.out.println(flag); 
        //声明一个int类型的变量存放3和5的累加和 
        byte b = 3; 
        short s = 5; 
        int num = b+s+flag; 
         
         
    } 
} 

字符型

/* 
    字符型: 
        符号    空间    范围 
        char     2      0-65535     
        注意事项:   
        1:给char类型变量赋值时一定要注意是单引号引起来的单个字符。         
        2: '' 字符  "" 字符串 java中的字符串的类型是String 
        3: java采用unicode 可以使用中文 
        4:char类型是可以直接赋值整数的 包含0的正整数 
        5:char类型是可以参与四则运算的 
        6: 使用\ u + 十六进制数即可  (不常用) 
        7: 转义字符, 
           转变含义,在java中有些符号已经有了自己的用法, 
           通过转义字符,转变其含义。 
           \+要转义的字符 
        6、7 了解即可但是一定要记住转义字符。    
            
*/ 
public class Demo04{ 
    public static void main(String[] args){ 
        //声明一个char类型的变量 
        char ch = 97;//将字符A赋值给了char类型变量ch存放 
        System.out.println(ch+1); 
         
        // java采用的是unicode u十进制的数 
        ch = '\u0011'; 
        System.out.println("---"+ch+"---"); 
         
        //输出' 
        ch = '\''; 
        System.out.println("---"+ch+"---"); 
         
        //使用转义字符 
        ch = '\t'; 
        System.out.println("---"+ch+"---"); 
         
        System.out.println("abcdefgh\tigklmn"); 
        System.out.println("abcdefghigklmn"); 
         
        System.out.print("\n");  
    } 
} 


类型转换

自动转换:
boolean类型是不可以进行类型转换的 
        自动转换: 
            小变大 
            大类型 变量名 = 小类型的值; 
                        char 
                         | 
            byte->short->int->long->float->double

public class Demo06{ 
    public static void main(String[] args){   
        //声明一个byte类型的变量 
        byte b = 12; 
         
        // 声明一个int类型的变量存放byte类型的数据 
        int num = b;//把变量b中的值赋值给int类型的变量num存放 
         
        //声明一个boolean类型的变量 
        boolean f = true; 
         
        //num = f; 
         
        //声明一个char类型 
        char ch = 'a'; 
        num = ch; 
         
        System.out.println(num); 
    } 
} 

强制转换:
强制转换:(强转有风险,转换需谨慎) 
            大变小 
            小类型 变量名 = (小类型)大类型的变量; 
            如果大类型的变量的值超过了小类型的范围,结果有问题。

int num = 300;       
//将int类型的值赋值给byte 
byte result = (byte)num; 
System.out.println(result);

运算符

常见概念

运算符: 
        int num = 3+5; 
    = + 都是运算符 
    运算符左右两边的内容称之为操作数 
    3+5 表达式 
    int num = 3+5; 语句  ;结尾称之为语句

算数

+号
+ 在java中一共有3种用途 
1:正号 
2: 加法运算 
3:连接符号 
// + 号左右两边的操作数只要有一个是字符串类型  
// 那么+号的作用就是拼接作用,将+号左右两边的操作数 // 拼接为一个新的字符串。
public class Demo01{ 
    public static void main(String[] args){ 
        /* 
            + 在java中一共有3种用途 
            1:正号 
            2: 加法运算 
            3:连接符号 
        */ 
        //声明一个变量 
        int num = +5+4; 
        System.out.println(num); 
        // + 号左右两边的操作数只要有一个是字符串类型  
        // 那么+号的作用就是拼接作用,将+号左右两边的操作数         // 拼接为一个新的字符串。 
        System.out.println("1+1="+(1+1)); 
         
         
    } 
} 
-号
负号 
减法运算
* / %
/** 
    针对1234分离每一位: 
         
        *  
        /  10/3 
        %   
    1234%10 -> 4 个位      一个数对10取余数 获取到的就是最低位 
    1234/10 -> 123  
     
*/ 
public class Demo02{ 
    public static void main(String[] args){ 
        int num = 10/3;// int类型计算之后的结果还是整数  
        System.out.println("结果是:"+num);   
        num = 10%3; 
        System.out.println("结果是:"+num); 
         
        //声明变量num = 1234 
        num = 1234; 
         
        //获取个位 
        int bit = num%10; 
        System.out.println("个位:"+bit); 
         
        //将1234 变为123 
        num = num/10; 
        //获取最后一位 
        bit = num%10; 
        System.out.println("十位:"+bit); 
         
        //123 变为12 
        num = num/10; 
        //获取最后一位 
        bit = num%10; 
        System.out.println("百位:"+bit); 
         
        //12 变为1 
        num = num/10; 
        System.out.println("千位:"+num); 
         
    } 
}

自增 自减
自增++ 
        自增1 
        当++是一条单独语句的时候,前加和后加一样 都是自增1         如果不是独立一条语句 
            前加: 先自增 再运算 
            后加: 先运算 再自增 
    自减-- 
        自减1 
        和++相同 不过只是-1 
    单目运算符。

public class Demo03{ 
    public static void main(String[] args){         //声明一个变量 
        int num = 10; 
        //自增 
        //num++; 
        num--; 
        System.out.println(num); 
         
        num = 10;   
        //自增 
        //++num; 
        --num; 
        System.out.println(num); 
         
         
        //将num归为10 
        num = 10; 
        //将num++的结果赋值给变量存储 
        int result = num++;//先运算 再自增 
        System.out.println("result="+result+",num="+num); 
         
        //num归为10 
        num = 10; 
        result = ++num; 
        System.out.println("result="+result+",num="+num); 
         
         
        //声明变量 
        int j = 10; 
        int k = 4; 
        result = j-- - k++ + ++k + k-- + ++j; 
        System.out.println("result="+result+",k="+k+",j="+j); 
         
         
    } 
} 

分析题:

image335.png

关系

注意事项
比较基本数据类型 
    >  <  >=  <= 
比较基本数据类型和引用类型 
   ==  != 
关系运算符最后得到的结果是一个boolean值 
代码:
public class Demo04{ 
    public static void main(String[] args){ 
        System.out.println(5<3); 
        //测试使用== != 
        int num1 = 10; 
        int num2 = 20;       
        System.out.println(num1==num2);//比较相等 
         
        //声明两个字符串类型的变量 
        String str1 = "abc"; 
        String str2 = "abc"; 
        System.out.println(str1==str2);//得到结果为true 
        //System.out.println(str1>str2);//编译报错 
        System.out.println(str1!=str2); 
         
    } 
} 

内存分析:

image348.png

逻辑

注意事项
& | ! ^  && || 
    1:逻辑运算符左右两边连接的操作数是一个boolean类型的值 
    2:& 左右两边操作数有一个为false,其结果就是false,如果都为true其结果才为true。 
    3:| 左右两边操作数有一个为true,其结果就是true,如果都为false其结果才为false。 
    4:! 取反 
    5:^  相同为false 不同为true 
    6:&& || 称之为短路与和短路或,&&如果第一个操作数为false其结果就是false不会执行第二个操作数。         || 如果第一个操作数为true,整个结果就为true,不会执行第二个操作数 
     
       
    & | ^  既是逻辑运算符也是位运算符 

public class Demo05{ 
    public static void main(String[] args){         // 通过一个运算符连接不是boolean 
        System.out.println("测试&运算符"); 
        System.out.println(true&false); 
        System.out.println(true&true); 
        System.out.println(false&false); 
        System.out.println(false&true); 
        System.out.println("测试&&运算符"); 
        System.out.println(true&&false); 
        System.out.println(true&&true); 
        System.out.println(false&&false); 
        System.out.println(false&&true); 
         
        System.out.println("测试|运算符"); 
        System.out.println(true|false); 
        System.out.println(true|true); 
        System.out.println(false|false); 
        System.out.println(false|true); 
        System.out.println("测试||运算符"); 
        System.out.println(true||false); 
        System.out.println(true||true); 
        System.out.println(false||false); 
        System.out.println(false||true); 
         
        System.out.println("测试!运算符"); 
        System.out.println(!false); 
        System.out.println(!true); 
         
        System.out.println("测试^运算符"); 
        System.out.println(true^false); 
        System.out.println(true^true); 
        System.out.println(false^false); 
        System.out.println(false^true); 
         
         
         
    } 
} 
代码例子
/** 
  模拟登录: 
     
*/ 
public class LoginV1{ 
    public static void main(String[] args){ 
        //声明两个变量存放注册的信息 
        int regUname = 123; 
        int regPwd = 123; 
         
        //声明两个变量存放登录信息 
        int loginUname = 123; 
        int loginPwd = 234; 
         
        boolean flag = (regUname==loginUname) && (regPwd==loginPwd);         System.out.println(flag); 
    } 
} 
获取键盘输入
/** 
  如何实现用户输入: 
    1:在当前类的头顶上编写如下代码: 
        import java.util.Scanner; 
    2: 在代码中编写如下代码: //只需要写一次 
        Scanner input = new Scanner(System.in); 
    3: 在上述信息编写完成之后,编写如下代码: 
        int num = input.nextInt(); 
*/ 
import java.util.Scanner; 
public class LoginV2{ 
    public static void main(String[] args){ 
        //声明两个变量存放注册的信息 
        int regUname = 123; 
        int regPwd = 123; 
         
         
        //给用户提示信息  
        System.out.println("请输入用户名>>>>>"); 
        Scanner input = new Scanner(System.in);//只需要写一次 
         
        int loginUname = input.nextInt();//获取用户键盘上输入的值 
         
        System.out.println("请输入密码>>>>>"); 
        int loginPwd = input.nextInt(); 
         
        //通过&&判定是否登陆成功 
        boolean flag = (regUname==loginUname)&&(regPwd==loginPwd);         System.out.println(flag); 
    }   
}

赋值和拓展

注意事项
扩展运算符: 
        += *= /= %=  
    计算两个学生的分数之和      缺点:不利于阅读 
    优点: 
        简化代码量 
        提高编译速度 
        自动强转 
代码
public class Demo08{ 
    public static void main(String[] args){ 
        //声明两个变量存放两个学生分数 
        int zhangScore = 120; 
        int liScore = 98; 
         
        //声明变量存放 
        int result = 0; 
        //result += zhangScore; //result = result + zhangScore;         //result += liScore;//result = result + liScore; 
        result = result + zhangScore; 
        result = result + liScore; 
        System.out.println(result); 
         
        int num = 10; 
        byte b = 10; 
        // b =(byte)(b+num); 
        b += num; 
        System.out.println(b);    
     
    } 

} 

条件

注意事项
条件运算符:三目运算符 
格式: 
    表达式1?表达式2:表达式3 
    首先计算表达式1 的值,永远只能是true或者是false 
    如果表达式1的值是true ,这个三目运算符的结果是表达式2的值。     如果表达式1的值是false,这个三目运算符的结果是表达式3的值 
代码
public class Demo06{ 
    public static void main(String[] args){ 
        // 计算两个数的最大值: 
        //声明2个变量存放值 
        int num1 = 20; 
        int num2 = 30; 
         
        System.out.println(num1>num2); 
         
        //三目运算符 
        int max = 0;//num1>num2?num1:num2; 
        System.out.println("num1和num2中大的值是:"+max); 
         
        //计算三个数的最大值 
        int num3 = 26; 
         
        max = num1>num2?num1:num2>num3?num1>num2?num1:num2:num3;         System.out.println("num1和num2,num3中大的值是:"+max); 
         
         
    } 
} 
常见面试题
/** 
    三目运算符中的面试题: 
        表达式中类型会自动提升 
        int num = 90>100?90.0:100; 
        System.out.println(num); 
     
*/ 
public class Demo07{ 
    public static void main(String[] args){         // 判定一个数字奇数还是偶数 
        int num = -1; 
        // 被除数-被除数/除数*除数  
        String str = num%2==1?"奇数":"偶数"; 
        System.out.println(str); 
    } 
} 

运算符优先级:

运算符的优先级: 

= 赋值最低  扩展运算符  条件 

1:算数 > 关系 >  逻辑 > 三目 >赋值   
2: 单目>双目>三目 
3:加括号 

你可能感兴趣的:(Java运算符 day3)