目标开发一款自己喜欢且能最大限度让用户参与建设的社交软件。

笔记:

原码;反码;补码(重点、难点,必背)

1、二进制的最高位是符号位:0表示正数,1表示负数

2、正数的原码、反码、补码都是一样的

3、负数的反码=它的原码符号位不变,其他位取反

4、负数的补码=它的反码+1.负数的反码 = 负数的补码 - 1

5、0的反码、补码都是0

6、java没有无符号数,换言之,java中的数都是有符号的

7、在计算机运算的时候,都是以补码的方式来运算的

8、当我们看运算结果的时候,要看他的原码

 位运算符:

java 中有7个位运算(& 、| 、^ 、~ 、>>、<<、和>>>)

按位与&   :两位全为1,结果为1.否则为0

按位或|:两位有一个为1.结果为1,否则为0

按位异或^:两位一个为0,一个为1,结果为1,否则为0

按位取反~ :0转换成1,1转换成0

练习:2&3 =       ~-2 =       2|3 =     2^3  =  

public class BitOperator {
	public static void main (String [] args) {
		System.out.println(2 & 3);
		System.out.println(~ -2);
		System.out.println(2 | 3);
		System.out.println(2 ^ 3);
	}
}

 【先得到原码、在转换成反码、最后是补码;通过位运算后得出的补码,倒推反码原码,最后变成十进制】

1、算术右移 >>  :低位溢出,符号位不变,并用符号位补溢出的高位【本质是原数除以几次2(移几次就除以几次))】

2、算术左移<<:符号位不变,低位补0【本质是原数乘以几次2(移几位就乘以几次)】

3、>>>逻辑右移也叫无符号右移,运算规则是:低位溢出,高位补0

4、特别说明:没有<<<符号

作业:

10 / 3 = 3        10 / 5 = 2        10 % 2 = 0       -10.5 % 3 = -3.5    正确答案是-1.5 (a % b 当a是小数时,公式= a - (int)a / b * b     注意:有小数运算,得到结果是近似值)

试着写出String转换成Double类型的语句,以及将char类型转换成String的语句,距离说明即可

String str = "28";
double d = Double.parseDouble(d);

char c = "刘";
String str = c +" ";

控制结构

在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有散发流程控制语句:顺序控制、分支控制、循环控制

顺序控制,程序从上到下逐行地执行,中间没有任何判断和跳转。java中定义变量时采用合法的向前应用。

分支控制 if-else         单分支基本语法:if (条件表达式){

                                                        执行代码块,可以有多条语句

}

 

import java.util.Scanner;
public class If01{
	public static void main (String [] args) {
		Scanner myscanner = new Scanner(System.in);
		System.out.println("请输入年龄");
		int age = myscanner.nextInt();
		if(age > 18) {
			System.out.println("要对自己负责");
		}
		System.out.println("程序继续…");
	}
}

        双分支基本语法:if (条件表达式){

                                                        执行代码块1,可以有多条语句

}

                                               else {

                                                        执行代码块2

 }

练习:

public class If02{
	public static void main (String [] args) {
		double a = 11;
		double b = 17;
		if(a > 10 && b < 20) {
			System.out.println("a + b ="+ (a + b));
		}
		System.out.println("程序继续…");
		int m = 7;
		int n = 8;
		int s = m + n;
		if(s % 3 == 0 && s % 5 ==0) {
			System.out.println("和可以被3又能被5整除");
		} else {
			System.out.println("和不能被3以及5整除");
		}
	}
}

        多分支基本语法:if (条件表达式){

                                                        执行代码块1,可以有多条语句

}

                                               else if {

                                                        执行代码块2

 }

                                              ……

                                                else  {

                                                        执行代码块n

 }

 

java中负号表示 java中负号表示什么_补码

 多分支可以没有else,如果所有的条件表达式都不成立,则一个执行入口都没有;如果有else,如果所有的条件表达式都不成立,则默认执行else代码块。

 练习题:

import java.util.Scanner;
public class If03 {
	public static void main (String [] args) {
	Scanner myscanner = new Scanner(System.in);
	System.out.println("请输入信用分(1-100)");
	int grade = myscanner.nextInt();
		if(grade >=1 && grade <=100) {
			if(grade == 100) {
				System.out.println("信用极好");
			} else if (grade > 80 && grade <=99) {
				System.out.println("信用优秀");
			} else if (grade >= 60 && grade <=80) {
				System.out.println("信用一般");
			} else {

				System.out.println("信用不及格");
			}
		} else{
			System.out.println("信用分需要在1-100,请重新输入:)");
		}	
	}
}

练习:

boolean b = true;
if(b == false) {     //如果 b = false 又会输出什么
	System.out.println("a");
} else if (b) {
	System.out.println("b");
} else if (!b) {
	System.out.println("c");
} else {
	System.out.println("d");
}

嵌套分支:在一个分支结构中又完整的嵌套了另一完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。规范或者建议:不要超过3层,可读性不好

 练习:

import java.util.Scanner;
public class NestedIf {
	public static void main (String [] args) {
	Scanner myscanner = new Scanner(System.in);
	System.out.println("请输入歌手分数");
	double score = myscanner.nextDouble();
		if(score > 8.0) {
			System.out.println("请输入性别");
			char gender = myscanner.next().charAt(0);
		    if (gender == '男') {
				System.out.println("进入男子组");
			} else if (gender == '女') {
				System.out.println("进入女子组");
			} else {
				System.out.println("您输入的性别有误,请重新输入");
			}
		} else{
			System.out.println("Sorry");
		}	
	}
}

练习:根据淡旺季的月份和年龄,打印票价

import java.util.Scanner;
public class HomeworkNestedIf {
	public static void main (String [] args) {
	Scanner myscanner = new Scanner(System.in);
	System.out.println("请输入月份");
	int mon = myscanner.nextInt();
		if(mon >= 4 && mon <=10) {
			System.out.println("请输入年龄");
			int age = myscanner.nextInt();
		    if (age < 18) {
				System.out.println("半价");
			} else if (age >= 18 && age <= 60 ) {
				System.out.println("60");
			} else {
				System.out.println("1/3");
			}
		} else{
			System.out.println("请输入年龄");
			int age = myscanner.nextInt();
		     if (age >= 18 && age <= 60 ) {
				System.out.println("40");
			} else {
				System.out.println("20");
			}
		}	
	}
}