java SE 2.2

运算符

算术运算符

package day2;

public class Demo9 {

  /*
     算术运算符
     + - * / %  ++ --

     +: 作用1: 正号 作用2:加法运算 作用3:字符串连接符
     -: 作用1: 符号 作用2:减法运算
     * / % 只能用作算术运算  数值与数值运算
   */
​
public static void main(String[] args) {
   /*  int a = +30;
       int b = 20;
    System.out.println(a+b);
    System.out.println(a-b);
    System.out.println(a+'a');// 加法运算
    System.out.println(a-'a');// 减法运算
    //System.out.println(a+true);// 不可以
     int age = 20;
     String name = "jim";
    System.out.println("姓名:"+name+",age:"+age);
​
    System.out.println("---------------------");
    System.out.println(a*b);
    System.out.println(a/b);//1   整数/整数==结果是整数
    System.out.println(a%b); //取模  求余数 */
​
    /*   自增运算,自减运算  都只能用于数值类型
        ++
        --
     */
​
    /*    int a = 5;
          ++a; //a=a+1
          a++;
    System.out.println(a);//7
         --a; //a=a-1
         a--;
    System.out.println(a);//5*/
​
    int a = 5;
    //int b = ++a + 2;   在混合运算时  ++在前  先增再判断
    //System.out.println(b);//8
    int b = a++ + 2; // 在混合运算时  ++在后  先判断再增
    System.out.println(b);//7
    System.out.println(a);//6
}

}

比较运算符

== 和 != 可以用于数值之间比大小,还可以比较布尔类型, 还可以比较引用数据类型

<=  >= 和<  > 只能用于数值之间的比较 , 包含字符类型 返回值为 true/false

System.out.println(10==10);
System.out.println(ture==ture);
System.out.println("abc"=="abcd");
System.out.println('a'>10);
System.out.println(10>5);
System.out.println(10>10);

赋值运算符

= 把右边的值赋给左边变量,注意右边字面常量和左边的字面常量需要一致(也可以小类型隐式的转换为大类型的),注意强制类转换

+=  a+=b  相当于a=a+b

-=   a-=b   相当于a=a-b

*=   a*=b   相当于a=a*b

%= a%=b 相当于a=a%b

逻辑运算符

& 逻辑与          | 逻辑或        !  逻辑非

&& 短路与       || 短路或       ^ 逻辑异或

运算符,都只能是逻辑值与逻辑值之间的运算

package day3;

public class OperDemo3 {

public static void main(String[] args) {
   int a = 10;
   int b = 15;
   int c = 20;
   /*
      逻辑与(&和&&)当所有的表达式结果为true,结果才为true, 只要有一个表达式为false,结果就为false
      区别:
      & : 不会出现短路现象,已经有表达式为false,后面的表达式还会执行
      &&: 会出现短路现象 所以也称为短路与.一旦有表达式值为false, 后面其他的表达式就不执行,称为短路了 (常用,效率高)
    */
    System.out.println(a<b & c>b); // true & true = true
    System.out.println(a<b & c<b); // true & false = false
    //System.out.println(a>b & c++>b); // false & true = false  没有短路,前面为false 后面c++依然执行
    //System.out.println(c);21
​
    System.out.println(a<b && c>b); // true && true = true
    System.out.println(a<b && c<b); // true && false = false
    System.out.println(a>b && c++>b); // false && true = false
    System.out.println(c);//20
}
​
​
 /*
      |  || 子啊表达式中只要有一个是true,结果就为true
​
      |  不会出现短路现象
            有表达式返回true,但是后面的表达式还会执行
      ||  会出现短路现象
           一旦出现有表达式返回true,后面的表达式就不会执行了
    */ 
    System.out.println(a<b | c>b); // true | true = true
    System.out.println(a<b | c<b); // true | false = true
    //System.out.println(a<b | c++<b); // true | false = true
    //System.out.println(c);
​
    System.out.println(a<b || c>b); // true || true = true
    System.out.println(a<b || c<b); // true || false = true
    System.out.println(a<b || c++<b); // true || false = true
    System.out.println(c);
​
  }
}

package day3;

public class OperDemo5 {

​
  /*
     ^ 逻辑异或   突出重点就是 异    不同返回true,相同返回false
   */
    System.out.println(a<b ^ c>b);// true ^ true = false
    System.out.println(a>b ^ c>b);//false ^ true = true
​
    /*
       ! 逻辑非  取反
     */
    System.out.println(!true);//false
    System.out.println(!(a>b));//true
​
    /*
      int a = 10, b = 10, c = 10;
      boolean result = a++ == 10 && b-- == 10 || ++c == 10;
        result= true
        a=11
        b=9
        c=10(短路了,没有执行)
     */
}

}

条件运算符

结果 = (条件表达式)?结果1:结果2;

当条件表达式结果为true 时,返回?后面的结果

当条件表达式结果为false时,返回:后面的结果

条件表达式必定要返回结果(与 if{ }else{ }不一样) 返回的结果 与 接收变量类型都得一致

package day3;

public class OperDemo6 {

public static void main(String[] args) {
       /* int score = 50;
        String result =  (score>=60)?"及格":"不及格";
        System.out.println(result);*/
​
        int a = 10;
        int b = 20;
        int max = (a>b)?a:b;
        System.out.println(max);
​
}

}

位运算符

是对整数的二进制位进行运算的

<< 左移 二进制比特位向左移动 后面空缺补0

>> 右移 二进制比特位向右移动 带符号的移动 正数移动后,符号位补0, 负数移动后,符号为补1

>>> 无符号右移 不管是正数还是负数 移动后统一补0 结果肯定为整数

& 和 | 既可以当做逻辑运算符,也可以当做位运算符 当&和 | 左右是逻辑值(true/false) 时,当做逻辑运算符 当&和 | 左右是正数时,当做位运算符

package day3;

import java.lang.reflect.Array; import java.util.Arrays; import java.util.HashMap;

public class OperDemo7 {

public static void main(String[] args) {
        int a  = 2;
        //  0000 0010
        //  0000 1000
        int b = a<<2;//左移两位
        System.out.println(b);
​
        //0000 1000
        //0000 0010
        int c = -8;
        int d = c>>2;
        System.out.println(d);//-2
​
      /*  int x = 8;
        int y = x>>>1;
        System.out.println(y);//4*/
​
        int x = 8;
        int y = x>>>1;
        System.out.println(y);//4
        
        int x = -8;
        int y = x>>>1;
        System.out.println(y);//2147483644
​
}

}

package day3;

public class OperDemo8 {

public static void main(String[] args) {
    //System.out.println(true & false);
    //System.out.println(true | false);
​
    int a  = 5;
    int b = 4;
    /*
       & 把两个整数的对应的二进制位进行 运算(每一列都是1,结果就是1,否则结果为0) 
          0000 0101   5
          0000 0100   4
          0000 0100   4
     */
    System.out.println(a & b);//4
​
    /*
         | 每一列只要一位是1,结果就是1,都没有1时才是0
          0000 0101   5
          0000 0100   4
          0000 0101   5
     */
    System.out.println(a | b);//5
​
    int x = 4;
    int y = 5;
    /*
       ^ 异或  两个数对应列的比特位相同结果0  不同结果为1
        0000 0100   4
        0000 0101   5 
        0000 0001   1
     */
    System.out.println(x^y);
​
     /*
       ~ 取反
        0000 0100
        1111 1011
      */
    System.out.println(~x);//-5
​
    /*
        计算机中数值存储时,都用的补码存储的
        正数的补码  反码  原码三码合一
        负数以补码形式表示
        数值二进制为什么要用补码存储,因为计算机只做加法, 把减法 转换为加法
         3-2 = 1 -->   3+(-2) = 1
​
         +3  0000 0011
         -2  1111 1110 
             0000 0001
​
         2   0000 0010
             1111 1101  反码 +1
             1111 1110  -2的补码
     */
​
}

}

控制台输入

package day3;

//导入类库 import java.util.Scanner;

public class ScannerDemo {

public static void main(String[] args) {
    //创建一个输入对象
    Scanner scanner = new Scanner(System.in);//相当于导库,调用函数
    System.out.println("请输入姓名");
    String name = scanner.next();//从控制台上读取字符串
    
    System.out.println("请输入年龄");
    int age  = scanner.nextInt();
    
    System.out.println(name+":"+age);
​
}

}

循环语句

循环: 满足某种条件时,重复执行某些操作 while do while for 循环有四个部分 循环变量初始化 循环条件 循环体 循环变量迭代

if判断和switch...case循环

if(条件表达式 a>b && c>d ture / false ){ }

if(条件表达式){ }else{ }

if(条件表达式){ }else if (条件表达式){ }.......

if(条件表达式){ }else if{ }......else{ }

注意: if后面如果没有 { },只能控制与其相邻的那一行

package day3;

import java.util.Scanner;

public class SwitchDemo {

/*
    表达式值 可以是 byte short int char String(字符串) 枚举
    switch(表达式){
       case 字面常量1 :  语句块1   [break];
       case 字面常量2 :  语句块2   [break];
       case 字面常量3 :  语句块3   [break];
       ....
       default: 默认语句块
    }
 */
​
public static void main(String[] args) {
      /* int w = 3;
       switch (w){
           case 1:
               System.out.println("星期一");
               break;
           case 2:
               System.out.println("星期二");
               break;
           case 3:
               System.out.println("星期三");
               break;
           default:
               System.out.println("输入不合法");
       }*/
​
    /*String w = "3";
    switch (w){
        case "1":
            System.out.println("星期一");
            break;
        case "2":
            System.out.println("星期二");
            break;
        case "3":
            System.out.println("星期三");
            break;
        default:
            System.out.println("输入不合法");
    }*/
​
    /*
    从控制台输入一个整数月份
    打印该月份所属的季节,3,4,5春季  6,7,8夏季  9, 10, 11秋季  12 ,1,2 冬季
    分别用if  switch实现
    */
    Scanner scanner = new Scanner(System.in);
         int month = scanner.nextInt();
    if(month==3||month==4||month==5){
        System.out.println(month+"是春季");
    }else if(month>=6&&month<=8){
        System.out.println(month+"是夏季");
    }else if(month>=9&&month<=11){
        System.out.println(month+"是秋季");
    }else if(month==12||month==1||month==2){
        System.out.println(month+"是冬季");
    }else{
        System.out.println("输入有误");
    }
​
    //switch实现
    month = scanner.nextInt();
    switch (month) {
        case 1:
        case 2:
        case 12 :
            System.out.println(month+"是冬季");
            break;
        case 3:
        case 4:
        case 5 :
            System.out.println(month+"是春季");
            break;
        case 6:
        case 7:
        case 8 :
            System.out.println(month+"是夏季");
            break;
        case 9:
        case 10:
        case 11 :
            System.out.println(month+"是秋季");
            break;
        default:
            System.out.println("输入有误");
    }
}

}

while和do while循环

package day3;

import java.util.Scanner;

public class WhileDemo {

public static void main(String[] args) {
        /* int a = 1;
         while (a<=5){
             System.out.println(a);
              //a++;
             //a=a+1;
             //a+=1;
              a+=2;
         }*/
​
    /*int  a = 5;
    while (a>=1){
        System.out.println(a);
        a--;
    }*/
​
    
    //  while实现死循环
     
     /*while(true){
         System.out.println("111");
     }*/
    /*
       do{
​
       }while(条件表达式)
       先执行后判断,即使条件不成立  也会执行一次
     */
​
    /* int a = 8;
     do {
         System.out.println(a);
         a++;
     }while (a<=5);*/
​
     /*
         猜数字游戏
            循环让用户输入一个数字,
            当输入的值与x相同时,循环就可以结束
            猜小了  提示小了
            猜大了  提示大了
            相等退出循环   使用break关键字退出循环
            记录一下猜的次数
      */
    /*int x = 30;
    int count = 0;
    Scanner scanner = new Scanner(System.in);
     while (true){
         count++;
         int g =  scanner.nextInt();
         if(g>x){
             System.out.println("猜大了");
         }
         if(g<x){
             System.out.println("猜小了");
         }
         if(g==x){
             System.out.println("你经过了"+count+"次猜对了");
             break;
         }
     }*/
​
    //一直青蛙在一口11米深的井底向上爬,白天向上爬3米,晚上向下滑2米,总共需要几天可以爬出.
        int h = 0; //记录每天爬的高度
        int sum = 0;
        while (true){
            sum++;
            h+=3;
             if(h>=11){
                 System.out.println("经过了"+sum+"天爬出去了");
                 break;
             }
            h-=2;
        }
}

}

for循环

for(变量初始; 循环条件; 变量迭代){ }

break 用在Switch循环语句中, 结束整个循环语句

continue 用在循环语句中 结束当次循环

循环嵌套

 public static void printStar(int row,int col){
      int row =4;
      int col= 5;
 for(int i=0;i<=row;i++){//外层循环,控制行数
      for(int j=1;j<= col ; j++){
      //内层循环,控制列数
           System.out.print("*");
//注意:在内层循环使用break 只结束内层循环, 不结束外层循环
   //  如果想要结束外层循环 需要使用标签
      }
           System.out.println();
   }
}
标签格式如下:
outloop:for(      ){//结束整个循环
​   for(      ){
     循环体
​   break outloop;
​  }​
}

函数(java中的方法)

就是写某个特定功能的代码,把他写在一组有名称的代码块{ }中,需要使用的时候,通过函数名调用(调用时,需要通过类名调用)

[访问权限修饰符]   [修饰符]    返回值类型    函数名(参数列表) {

方法体

(如果有返回值) return 值;

}

package day4;
​
public class Demo3 {
    public static void main(String[] args) {//Demo3是类名
        Demo3.print99(5);//调用含参的99乘法表函数
        System.out.println("------------------");
        Demo3.print99();//调用不含参的00乘法表函数
        Demo3.printStar(5,10);
    }
​
​
    public static void print99(int row){//含参的
        for (int i =1;i<= row ; i++){
            for(int j=1;j<=i ;j++){
                System.out.print(j+"*"+i+"="+ i*j +" ");
            }
            System.out.println();//换行
        }
    }
​
    public static void print99(){//不含参
        for (int i =1;i<= 9 ; i++){
            for(int j=1;j<=i ;j++){
                System.out.print(j+"*"+i+"="+i*j+" ");
            }
            System.out.println();//换行
        }
    }
​
    public static void printStar(int row,int col){//不含参
        for(int i=0;i<=row;i++){//外层循环,控制行数
            for(int j=1;j<= col ; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
注意: 在java中可以定义两个函数名一样的方法, 称为方法的重载,区分关键在于是否有参数. 
void是没有返回值的类型, 可以不用写return;
如果定义了返回值的类型,就必须要写返回值

return作用

package day4;
​
public class Demo5 {
    public static void main(String[] args) {
        Demo5.print(98);
    }
​
    //void修饰的函数可以使用return,且后面不能添加任何值(return;)
    //如果是return 0 ,相当于有返回值
    public static void print(int score){
        if(score<0 || score >100){
            System.out.println("成绩不合法");
            return;
        }
        if(score>= 90){
            System.out.println("A");
            return;
       //return是终止,不return的话会出现问题,因为成绩也满足>=80,会同时打印AB
        }
        if (score>=80){
            System.out.println("B");
        }
    }
}
​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值