折纸的不归路(6)

一.补充内容

一.异或的运用

不使用第三个变量,将a,b两个变量的值进行交换
a=10(1010)
b=11(1011)
a=a^b; a=0001 b=1011
b=a^b; a=0001 b=1010
a=a^b; a=1011 b=1010
特例:两个相同的数的异或结果为0
eg:a=10, b=10, a^b=0

二.移位运算符

(二进制运算)
<<:左移
>>:带符号右移,算术右移
>>>:无符号右移,逻辑右移

带符号右移实例

例1:
int a = 12;
内存中的保存形式为:
00000000 00000000 00000000 00001100
12>>2
舍掉低位,在高位上补符号位,整数补0,负数补1
12>>2=3
例2:
int i = -12;
-12>>2
内存中保存的形式为:
原码
00000000 00000000 00000000 00001100
取反
11111111 11111111 11111111 11110011
加1
11111111 11111111 11111111 11110100
右移两位>>2
11111111 11111111 11111111 11111101
-1
11111111 11111111 11111111 11111100
取反
00000000 00000000 00000000 00000011
=3→-3

无符号右移实例

>>>
舍掉低位,在高位补0
例1:
Int i = -12;
内存中保存的
原码
00000000 00000000 00000000 00001100
取反
11111111 11111111 11111111 11110011
加1
11111111 11111111 11111111 11110100
不带符号右移两位>>>2
00111111 11111111 11111111 11111101
=1073741821

左移

<<
舍掉高位,在低位上直接补0,相当于原数乘以对应2的位数次方

移位运算符运算步骤

1.遇到移位操作符,首先将数字转换为二进制的表示形式(补码)
2.在考虑左移还是右移
3.再考虑补0还是补1

三.逻辑运算操作符

两侧都为布尔表达式,返回值为布尔,一般用来判断
&&:(短路运算符)

false && false ==>false
false && true==>false
true && true==>true

||

false || false ==>false
false || true==>true
true || true==>true

四.三目运算符

语法

布尔表达式:?True的结果:false的结果
例:
int score = 65;
String result = Score>=60 ? “及格”:”不及格”;
输出 result,结果是及格或不及格.

五.如何获得自己输入的数据

1.Scanner

Java.util.Scanner

因为是一个引用类型。使用前需要new对象

Scanner sc = new Scanner(System.in);

使用对象sc

获取到下一个int:nextInt();
获取到下一个long :nextLong();
获取下一个字符串:next();

Tips:String[] args 等同于String... args
在使用java命令的时候,空格,接要输入的参数,多个参数之间用空格隔开,可以装进args中,但是是String类型的参数,需要按照要求做类型转换

六.自增和自减

++和–

int i = 10;
int a = i++; //a = 10  , i =11 ==>a = i ; i = i + 1;
int b = ++i;//b= 12  ,i =12==> i = i + 1 ;b = i;

自减同理

二.流程控制

一.判断逻辑

一.if …else…

If(判断条件){
结果为true的操作
}else{
结果为false的操作
}
if(判断条件1){
}else if(判断条件2){
}else if(判断条件3){
}else{
}

判断条件互斥

If语句可以嵌套使用
If(){
	If(){
		If(){
		
		}
	}
}

if…else…实例:

//需求:输入一个0-100以内的数字
//判断该数字作为成绩是否及格,如果及格的话等级为什么?
//95-100sss
//85-95ss
//75-85s
//60-75a
import java.util.Scanner;
public class Ifelse{
	public static void main (String[] args){
		//第一步:先获得输入的数
		Scanner sc = new Scanner(System.in);
		int data = sc.nextInt();
		//第二步:判断data是否合格
		if(data>=60 && data<=100){
			System.out.println("你的成绩及格,被评为");
			//第三步:对及格的成绩进行评级
			if(data>95){
				System.out.println("SSS");
				//return;//方法中遇到return则方法立即结束
			}
			if(data>85 && data<=95){
				System.out.println("SS");
			}
			if(data>75 && data<=85){
				System.out.println("S");
			}
			if(data<=75){
				System.out.println("A");
			}
		}else if(data<60 && data>=0){
			System.out.println("你的成绩不及格,下次继续努力");
		}else{
			//<0或者>100都会进入
			System.out.println("请输入正确的成绩格式!");
		} 
			
		
	}
}

二.switch …case

Switch(变量){
case1:
表达式1;
break;
case2:
表达式2;
break;
case3:
表达式3;
break;
default:
//代表以上取值之外的所有情况
表达式
break;
}

switch…case…实例:

/*
*需求:输入1-7的整形数字,得到相应的日期数
*eg:输入7,输出星期日
*/
import java.util.Scanner;
public class SwitchTest{
	public static void main (String[] args){
		//第一步:获得输入的数字
		Scanner sc = new Scanner(System.in);
		int data = sc.nextInt();
		//第二步:用switch判断data的各个取值
		switch (data){
			case 1:
			System.out.println("星期一");
			break;
			case 2:
			System.out.println("星期二");
			break;
			case 3:
			System.out.println("星期三");
			break;
			case 4:
			System.out.println("星期四");
			break;
			case 5:
			System.out.println("星期五");
			break;
			case 6:
			System.out.println("星期六");
			break;
			case 7:
			System.out.println("星期日");
			break;
			default:
			System.out.println("输入格式有误,请重新输入!");
			break;
		}
	}
}

二.循环逻辑

要素:变量初始化,循环条件(布尔类型的表达式),迭代(循环的次数),循环体(重复执行的代码)

一.for循环

for(初始化;循环条件;迭代){
循环体
}

for循环实例:

//需求:计算1+2+3+...+99+100
public class ForTest{
	public static void main(String[] args){
		int sum = 0;
		for(int i=1;i<=100;i++){
			//sum = sum + i;
			sum += i;
		}
		System.out.println(sum);	
	}
}

for循环可以控制循环的次数

二.While循环

初始化
While(判断条件){
循环体
迭代
}

三.Do…while循环

初始化
Do{
循环体
迭代
}while(循环条件);

do…while…实例:

//循环不断的生成[0,9]随机数,直到生成随机数为5的时候,那么就停止这个循环.
import java.util.Random;
public class Rand{
	public static void main(String[] args){
		//生成一个随机数
		Random num = new Random();
		int a ;
		do{
		//定义随机数的取值范围是[0-9]
			a = num.nextInt(10);
			System.out.println(a);
		}while(a<5 || a>5);
	}
}

四.打印九九乘法表

public class Biao{
	public static void main(String[] args){
		//i是行,j是列
		for(int i=1;i<=9;i++){
			for(int j=1;j<=i;j++){
				int k = i * j;
				System.out.print(j+"*"+i+"="+k+" ");	
			}
			System.out.println();
		
		} 
	}
}

三.心得

今天早上先是回头去研究创建一个类和方法,总算是比较透彻的理解了之间的关系.同时,今天也从linux虚拟机转战到了windows中去编写java程序.个人感觉还是windows中写代码比较舒服,就是GBK编码的错误让我很头疼,一直得用UTF-8去进行编译,暂时也没有找到比较好的解决办法.今天主要内容都不是很难,运算符理解起来还是比较容易的.流程控制方面我感觉就得多敲代码,然后仔细理清逻辑关系,学起来也没有很吃力,下来仅练习了几个程序,就可以理清逻辑关系了.明天加油!~

你可能感兴趣的:(折纸的不归路(6))