运算符

一.运算符:
	算数运算符
		+ - * / %  
		++  前加加:  先加1 ,后运算     后加加:先运算后加1
		比如a=5  b=a++  是后加加  先运算  b=a 此时a是5  b=5
							   后加1  a+=1  a=6
		c=2   d=++c   是前加加  先加1  c+=1  c=3
							 后运算  d=c 此时c为3  d=3
		--
	赋值运算符
		=    +=    -=  *=   /=   %=
		包含了一个强制类型转换 //尽量用这种方式 
		short s = 1;
		s+=1; //包含强制类型转换,所以不报错 
		s=s+1;  //报错
		
	关系运算符:
		返回结果是布尔类型的值 //区分 == 与=的不同   ==返回boolean类型 true或false  =是赋值语句
		==     !=    >=    <=    >   <
		instanceof   用于引用数据类型   "hell" instanceof String
	逻辑运算符
		&: 两个都是true结果才是true
		|: 只要有一个是true结果就是true
		^:相同为false不同为true
		!:非
		
		&&: 前面是false ,后面则不再进行运算
		int a =3;
		int b = 4;
		System.out.println(a-- > 4 &&  b++ > a) // false  由于a-->4为false 故后面的不执行
		System.out.println(a) //2
        System.out.println(b)  //4 //此时b++不执行
     
        int a =3;
		int b = 4
		System.out.println(a-- >4 &  b++>a ) // false  不论前面结果怎样,后面都执行
		System.out.println(a)	 // 2
        System.out.println(b)    // 5 b++执行
    
		||: 前面是true,则后面不执行 类比于上
		
		& | ^ ~  连接数字,先转成二进制补码,逐位运算,把1当成true,把0当成false
		按照byte类型作为演示
		22&(-3) //20
        	22的原码为0001 0110  补码为其本身 0001 0110
        	-3的原码为1000 0011  反码为1111 1100  补码为1111 1101
             0001 0110
           & 1111 1101  //0为false  1为true  &都为true才是true
             0001 0100  这是补码 求其原码 还是自身(起始符号位为0 正数) 结果为20
                  
        22|(-3) //-1
         	 0001 0110
           | 1111 1101  //0为false  1为true  |都是false才是false
             1111 1111  这是补码 求其原码为1000 0001结果为-1         
        22^(-3) //-21
        	 0001 0110
           ^ 1111 1101  //0为false  1为true //相同为false不同为true
             1110 1011  这是补码 求其原码为1001 0101结果为-21     
		~取反
			~20   //-21
			20的补码为0001 0100   
			~所有位取反  得到1110 1011  此时为补码 求其原码 1001 0101 为-21
	
	位运算符
		<<: 空位补0,最高位丢弃
		>>: 空位补最高位
		>>>:空位补0
		
		左移几位相当于乘以2的几次方
		右移几位相当于除以2的几次方
		
		
		之前演示过计算机底层加法的运算,位运算符运算其实是计算机底层乘法和除法的运算过程,只需要二进制数左移右移即可,换算成加法运算;
		比如 24*17 17可以改为(16+1) 可以改成24*16+24  *16表示左移4位  (24<<4)+24
			除法由于涉及到小数,原理我不太清楚,有兴趣自行搜索
	三目运算符
		a>b?a:b;
		
二. 键盘录入
			import java.util.Scanner;(放到class 上面)
			Scanenr sc = new Scanner(System.in);
			int a = sc.nextInt();
			String b = sc.nextLine();//最好不用这个  他识别换行回车  如果用的话最好放在第一个
			String c = sc.next(); //最好用这个接收字符串类型,
			
三. eclispe的使用
		改编码!!!!!!  utf-8
		一些快捷键  
        	alt+/  补全  
        	ctrl+2 后再按L
        	ctrl+shift+o  导包
        	ctrl+shift+F 整理格式
			shift + enter    换行
			ctrl+/  单行注释   再按一次取消单行注释
			ctrl+shift+/  多行注释(需要选中多行)
			ctrl+shift+\   取消多行注释
			alt+上箭头 /  下箭头   上下移动代码
			alt+shift+下箭头  复制一行代码

练习题

int a = 15;
int b = 2;
double c = 2;
System.out.println(a + "/" + b + "=" + (a / b));  // a/b= 7
System.out.println(a + "%"+ b + "=" + (a % b));  //a%b=1
System.out.println(a + "/" + c + "=" + (a / c)); //a/c=7.5  有小数就不会取整
System.out.println(a + "%" + c + "=" + (a % c));  //a%c=1.0  余数变为小数


int a2 = 10;
System.out.println(a2++);  //10 a2=11
System.out.println(a2);  //11
int x = 10;
int a1 = x+ x++;    //  10+10   x=11
System.out.println("a1 =" + a1); //20
System.out.println("x =" + x);// 11
int b1 = x + ++x; //11+12  x=12
System.out.println("b1 =" + b1);  //23
System.out.println("x =" + x);  //x=12
int c1 = x + x--;  //12+12  x=11
System.out.println("c =" + c1);  //24
System.out.println("x =" + x);  // 11
int d1 = x + --x; //11+10 x=10
System.out.println("d1 =" + d1);   //21
System.out.println("x =" + x);  //10

int a3 = 15;
int b3 = 2;
int x3 = a3 & b3; 
int y3 = a3 | b3;
int z3 = a3 ^ b3;
System.out.println(a3 + "&" + b3 + "=" + x3);
System.out.println(a3 + "|" + b3 + "=" + y3);
System.out.println(a3 + "^" + b3 + "=" + z3);

/*15的二进制为 0000 0000 0000 0000 0000 0000  0000 1111  补码相同

2的二进制位   0000 0000 0000 0000 0000 0000  0000 0010   补码相同		

15&2 =   0000 0000 0000 0000 0000 0000  0000 0010   这是补码  原码相同 为2

&  都为1才为1  其余为0 

15|2  =  0000 0000 0000 0000 0000 0000  0000 1111   这是补码  原码相同 为15

|  只要有1就为1  其余为0

15^2  =  0000 0000 0000 0000 0000 0000  0000 1101   这是补码 原码相同 为 13

^  不同为1 相同为0  */

int x4 ;
double y4;
x4 = (int)22.5 + (int)34.7; //22+34=56
y4 = (double)x4; //56.0
System.out.println("x4 = " + x4);
System.out.println("y = " + y4);

int i = 5;
int j = 5;
int m = 5;
int n = 5;
i++;  //i=6
j = j + 1;  //j=6
m--;//m=4
n = n - 1;//n=4
System.out.println(i); // 6  i=6
System.out.println(i++); // 6  i=7
System.out.println(++i); // 8  i=8
System.out.println(i--);  //8 i=7
System.out.println();
System.out.println(j); //6 j=6
System.out.println(j++); // 6 j=7
System.out.println(j--); // 7 j=6
System.out.println(--j); //5 j=5
System.out.println();
System.out.println(m); //4  m=4
System.out.println(n); // 4 n=4

int i7 = 0;
int j7 = 0;
System.out.println(i7);  //0
System.out.println(j7);  //0
i7++; //0 i7=1
++j7; //1 j7=1
System.out.println(i7); //1 i7=1
System.out.println(j7); //1 j7=1
System.out.println("--------------------------");
System.out.println(i7++); //1  i7=2
System.out.println(++j7); //2 j7=2
System.out.println("===========================");
System.out.println(i7);//2
System.out.println(j7);//2


int you = 56;  
String str = (you < 50) ? "hello":(you > 60) ? "1987":"1988";  
System.out.println(str);  //1988


int numx = 4;
int b = (numx++)+(++numx)+(numx*10);   //4+6+60=70

//numx++    4  numx=5

//++numx    6  numx=6

//numx*10   60
  1. 计算6+5%3+2的值是 10 // 先算5%3=2 再算6+2+2 =10
  2. 下面的逻辑表达式中合法的是___C_______ //逻辑表达式连接的是boolean类型
    A. (7+8)&&(9-5) B. (95)||(97) C. 9>6&&8<10 D. (9%4)&&(8*3)
  3. 2|3&5的值是 C // 先算& 再算| 3&5=1 2|1=3
    A. 1 B. 2 C. 3 D. 5
  4. 以下选项中,合法的赋值语句是(B )。
    A. a = = 1; B.++ i; C.a=a + 1= 5; D. y = int ( i );
  5. 写出四种不同的Java语句,实现对整型变量x加1 //x++ ; ++x; x+=1 x=x+1(x为int类型);
    学生成绩结果查询系统
    利用三目运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,80-89分之间的用B表示,70-79分以下的用C表示, 60-69分以下的用D表示,60以下用E。
package Test;
import java.util.Scanner;
/**
 *学习成绩>=90分的同学用A表示,
 *		80-89分之间的用B表示,
 *		70-79分以下的用C表示, 
 *		60-69分以下的用D表示,
 *		60以下用E.
 */
public class Tesst1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("输入学生成绩,0-100之间");
		double score = input.nextDouble();
		String level = score>=90?"A":score>=80?"B":score>=70?"C":score>=60?"D":"E";
		System.out.println("成绩为"+score+"的等级为"+level);
	}
}

从键盘输入两个整数,分别输出这两个数的和,差、积、商

import java.util.Scanner;
/**
 *从键盘输入两个整数,分别输出这两个数的和,差、积、商
 */
public class Tesst1 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("输入第一个整数");
		int a = input.nextInt();
		System.out.println("输入第二个整数");
		int b = input.nextInt();
		System.out.println(a+b);
		System.out.println(a-b);
		System.out.println(a*b);
		System.out.println(a/b);
	}
}