Java语言基础(三)

1   运算符(续)

+-*/

+

字符串连接

%

取余、求模

==

相等

!=

不相等

> >= < <=

比较大小

&&

逻辑与,左边是真,并且右边是真,结果是真

短路与,左边是假,右边忽略不执行

||

逻辑或,左边是真,或者右边是真,结果都是真

短路或,左边是真,右边忽略不执行

!

非真是假,非假是真
相反的条件判断

判断“非a”是真,即a是假

if(! a) {

}

&

位与

|

位或

^

异或

对同一个值异或两次,得到原值

~

求反

>> 

带符号向右移位

向右移动1位,相当于/2

>>> 

不带符号向右移位

<< 

向左移位

向左移动1位,相当于*2

++

--

自增、自减

int a = 5

print(a++) 先取值再自增

1)  取a的原值等待打印

2)  a自增变成6

3)  打印a的原值5

int a = 5

print(++a) 先自增再取值

1)  a先自增变成6

2)  取得a的新值等待打印

3)  打印a的新值6

? :

三项运算符

1 ? 2 : 3

1是真,取2的值

1是假,取3的值

=

赋值运算

左侧必须是变量

+=

/=

&=

>>=

...

复合的赋值运算符

a = 5

a += 2 //a = a+2

会自动转型

byte a = 5;

a = (byte) (a + 2);

a += 2;

a += 3.14

()

转型

1.1     运算符的优先级

(1+(2-3))*4/5

l  优先级高低,不需要记

l  多加小括号

      //能被4整除并且不能被100整除

      //或者能被400整除

      if((y%4==0 && y%100!=0) || y%400==0) {

         return true;

      }    

1.2     位运算

int拆分四字节

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        System.out.print("输入整数:");
        int n = new Scanner(System.in).nextInt();
        
        System.out.println("--拆分成四个byte值-------------");
        //把n的值传递到f1()方法进行拆分
        //在f1()方法中,直接打印显示拆分结果
        f1(n);
        
        
        
        
    }
    
    static void f1(int n) {
        /*
         * 11001101 10011110 11100100 10010011
         * 
         * n的值,右移24,16,8,0位,再强转成byte类型
         */
        byte b1 = (byte) (n>>24);
        byte b2 = (byte) (n>>16);
        byte b3 = (byte) (n>>8);
        byte b4 = (byte) (n>>0);
        
        System.out.println(b1);
        System.out.println(b2);
        System.out.println(b3);
        System.out.println(b4);
        /*
            
            11001101
            10011110
            11100100
            10010011
            
            r
            11001101 10011110 01100100 00000000
        */
        
        int r = 0;
        //字节值左移24再不带符号右移0,8,16,24
        //与r求位或,结果再保存到r
        r = r | (b1<<24>>>0);
        r = r | (b2<<24>>>8);
        r = r | (b3<<24>>>16);
        r = r | (b4<<24>>>24);
        System.out.println(r);
        
        /*
         * 11111111 11111111 11111111 11001101
         * 00000000 00000000 00000000 11111111 &
         * 00000000 00000000 00000000 11001101
         * 
         * 255 0xff 0x000000ff
         */
        r = 0;
        //字节值与0x000000ff求位与,
        //左移24,16,8,0位,与r求位或,
        //结果再保存到r
        r = r | ((b1 & 0x000000ff) << 24);
        r = r | ((b2 & 0x000000ff) << 16);
        r = r | ((b3 & 0x000000ff) << 8);
        r = r | ((b4 & 0x000000ff) << 0);
        System.out.println(r);
        
    }
       
}

三个整数最大值

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        System.out.println("输入三个整数:");
        int a = new Scanner(System.in).nextInt();
        int b = new Scanner(System.in).nextInt();
        int c = new Scanner(System.in).nextInt();   
        
        //a,b,c三个整数的值,
        //传递到max()方法,求最大值
        //得到方法的返回结果,保存到变量 m
        int m = max(a, b, c);
        System.out.println("最大值:" + m);
    }
    
    
    static int max(int a, int b, int c) {
        //求a,b的最大值保存到变量 max
        //求max,c的最大值,保存到 max
        //int max = a>b ? a : b; 
        //max = max>c ? max : c;
        
        int max = a>b ? (a>c?a:c) : (b>c?b:c);
        
        return max;
    }
    
}

3   流程控制

l  if

l  switch

l  for

l  while

l  do-while

商品打折

package day0203;

import java.util.Scanner;

public class Test1 {
    public static void main(String[] args) {
        System.out.print("输入原价:");
        double p =
         new Scanner(System.in).nextDouble();   
        
        //原价p的值,传递到discount()方法
        //来计算折扣价,
        //得到方法的返回值,保存到变量 p
        p = discount(p);
        System.out.println("最终价格:"+p);
    }
    
    static double discount(double p) {
        //定义折扣率变量 r   1, 0.95, 0.9, 0.xx
        double r = 1;
        //根据原价参数p的范围,
        //来为r赋不同的值
                
        if(p >= 5000) {
            r = 0.75;
        } else if(p >= 3000) {
            r = 0.8;
        } else if(p >= 1000) {
            r = 0.9;
        } else if(p >= 500) {
            r = 0.95;
        }
        
        //计算折扣价,并返回
        return p*r;
    }
    
}

4   if

package day0203;

 

import java.util.Scanner;

 

public class Test1 {

   public static void main(String[] args) {

      System.out.print("输入原价:");

      double p =

       new Scanner(System.in).nextDouble();  

     

      //原价p的值,传递到discount()方法

      //来计算折扣价,

      //得到方法的返回值,保存到变量 p

      p = discount(p);

      System.out.println("最终价格:"+p);

   }


   static double discount(double p) {

      //定义折扣率变量 r   1, 0.95, 0.9, 0.xx

      double r = 1;

      //根据原价参数p的范围,

      //来为r赋不同的值

           

      if(p >= 5000) {

         r = 0.75;

      } else if(p >= 3000) {

         r = 0.8;

      } else if(p >= 1000) {

         r = 0.9;

      } else if(p >= 500) {

         r = 0.95;

      }

      //计算折扣价,并返回

      return p*r;

   }


}

package day0204;

import java.util.Scanner;

public class Test1 {

   public static void main(String[] args) {

      System.out.print("工资:");

      double s = new Scanner(System.in).nextDouble();

     

      //把s传递到 grsds()方法,

      //来计算个人所得税

      //得到方法的返回值,保存到变量 tax

      double tax = grsds(s);

      System.out.println(

       "应缴纳个人所得税:"+tax);

   }

  

   static double grsds(double s) {

      //低于起征点,不交税

      if(s <= 3500) {

         return 0;

      }

      //工资刨掉3500

      s -= 3500; // s = s-3500;

      //定义税率变量r和速算扣除数变量k

      double r = 0;

      int k = 0;

      //根据s的范围,来确定r和k的值

      if(s<=1500) {

         r = 0.03;

         k = 0;

      } else if(s<=4500) {

         r = 0.1;

         k = 105;

      } else if(s<=9000) {

         r = 0.2;

         k = 555;

      } else if(s<=35000) {

         r = 0.25;

         k = 1005;

      } else if(s<=55000) {

         r = 0.3;

         k = 2755;

      } else if(s<=80000) {

         r = 0.35;

         k = 5505;

      } else {

         r = 0.45;

         k = 13505;

      }

      return s*r - k;

   }


} 

5   switch

l  当一个case成立,从这个case向后无条件执行所有case包括default(穿透),直到结束,或者遇到break中断、跳出switch

l  switch只能判断byte,short,char,int,
enum, jdk1.7后可以判断 String

switch(变量或表达式) {

case 50:

case 20:

   break;//中断、跳出

case 90:

case 70:

default:

}

6   for

for(变量赋值; 执行条件; 变量修改) {

   代码

}

// 1到10打印

for(int i=1; i<=10; i++) {
   System.out.println(i);
}

阶乘

package day0208;

 

import java.util.Scanner;

 

public class Test1 {

   public static void main(String[] args) {

      System.out.print("输入整数求阶乘:");

      int n = new Scanner(System.in).nextInt();

     

      //n传递到 f() 方法求n的阶乘

      //得到方法的返回值存到变量r

      long r = f(n);

      System.out.println(r);

   }

 

   private static long f(int n) {

      /*

       * 假设n是5

       *

       * r = 5

       *

       * i=4, r*=i

       * i=3, r*=i

       * i=2, r*=i

       * i=1, r*=i

       */

      long r = n;

     

      for(int i=n-1; i>=1; i--) {

         r*=i;

      }

     

      return r;

   }

}

猜你喜欢

转载自www.cnblogs.com/wood-life/p/10291421.html