1.赋值运算符
// 赋值运算符:+= -= *= /= %=
class GetValue {
public static void main(String[] args) {
int i1 = 10;
i1 += 3;// i1 = i1 + 3;
short s = 10;
//s = s + 3; 编译不通过
s = (short)(s+1);//不建议这样实现
s += 1;//既可以实现预算,又不会更改s的数据类型
int i2 = 12;
i2 %= 5;
System.out.println(i1);
System.out.println(s);
System.out.println(i2);
int i = 1;
i *= 0.1;
System.out.println(i);
}
}
2.位运算符
//位运算符: << >> >>> | & ~ ^
class TestBit {
public static void main(String[] args) {
int i1 = 31;
System.out.println(i1<<3);//248
System.out.println(i1<<28);//-268435456
System.out.println(i1>>2);//7
System.out.println(i1>>>2);//7
int i2 = -31;
System.out.println(i2>>2);//-8
System.out.println(i2>>>2);//1073741816
System.out.println(12 & 5);//4
System.out.println(12 | 5);//13
System.out.println(12 ^ 5);//9
System.out.println(~12);//-13
}
}
3.逻辑运算符
//逻辑运算符:& && | || ! ^
class TestLogic {
public static void main(String[] args) {
boolean a = true;
boolean b = false;
System.out.println(a & b);
System.out.println(a && b);
System.out.println(a | b);
System.out.println(a || b);
System.out.println(!a & b);
System.out.println(a ^ b);
//& 与 && 的区别:&:不管左边的值,右端都会进行运算
// &&: 左端为false, 右端不在进行运算
int i1 = 10;
if(b & (i1++) > 0) {
System.out.println("孩他爸");
}else {
System.out.println("孩他妈");
}
System.out.println(i1);
int i2 = 10;
if(b && (i2++) > 0) {
System.out.println("孩他爸");
}else {
System.out.println("孩他妈");
}
System.out.println(i2);
// | 与 || 的区别:|:不管左边的值,右端都会进行运算
// ||: 左端为true时,右端不在进行运算
}
}
4.课堂作业: 交换 m 和 n的值
class TestExert1 {
public static void main(String[] args) {
int m = 12;
int n = 5;
System.out.println("m:" + m + "n:" + n);
//方法一: 提供一个临时变量
int temp = m;
m = n;
n = temp;
System.out.println("m:" + m + "n:" + n);
//方法二:当m和n较大时,有可能出现精度损失
m = m + n;
n = m - n;
m = m - n;
System.out.println("m:" + m + "n:" + n);
//方法三:
m = m ^ n;
n = m ^ n;//(m ^ n)^ n == m;
m = m ^ n;//(m ^ n) ^ m == n
System.out.println("m:" + m + "n:" + n);
//问题:
//60 手动的方式,从控制台输出60的十六进制
int i = 60;
//自动调用Integer类现成的方法
String binary = Integer.toBinaryString(i);
System.out.println(binary);
String hex = Integer.toHexString(i);
System.out.println(hex);
int j = i&15;//获取到i的最低4位对应的值
String c1 = (j<=9)?j+"":(char)(j-10+'a')+"";
//System.out.println(c1);
i = i>>4;
int j1 = i & 15;
String c2 = (j1<=9)?j1+"":(char)(j1-10+'a')+"";
System.out.println(c2+c1);
}
}
5.三元运算符
//三元运算符 :(条件表达式)? 表达式1 :表达式2;
//要求:表达式1与表达式2为同种数据类型
//结果的数据类型与表达式1,2的类型一致
class TestSanYuan {
public static void main(String[] args) {
int i = 10;
int j = 20;
int max = (i>j)? i:j;
String str = (i > j)? "i大": "j大";
String str1 = (i > j)? "i大" : (i==j)? "相等" : "j大";
System.out.println(max);
System.out.println(str);
System.out.println(str1);
//练习:如何使用三元运算符,输出三个数中的较大值
int m = 12;
int n = 23;
int k = -9;
int max1 = (m>n)? (m>k)? m: k : (n>k) ? n : k;
//int max2 = (max1>k) ? max1 : k;
System.out.println(max1);
}
}
6.输入
//从键盘输入数据
//1.导包
import java.util.Scanner;
class TestScanner {
public static void main(String[] args) {
//2.创建一个Scanner类的对象
Scanner s = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//3.调用此对象的相应的方法,完成键盘输入的值的获取
//next():表示从键盘获取一个字符串
String str = s.next();
System.out.println(str);
}
}
流程控制:顺序结构; 分支结构(if-else; switch-case); 循环结构(while; do…while; for(;;))
7.if-else
/*
从键盘输入小明的期末成绩。
当成绩为100时,奖励一辆bmw;
成绩为80 到 99,奖励一台ipone
成绩为60到80时,奖励一本书;
否则什么都没
*/
import java.util.Scanner;
class TestIf1 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入小明的期末成绩: (分)");
int score = s.nextInt();
if(score>100 || score < 0) {
System.out.println("你输入的数值有误!");
}else {
if(score==100) {
System.out.println("bmw");
}else if(score > 80){
System.out.println("iphone");
}else if(score > 60){
System.out.println("参考书");
}else {
System.out.println("没东西");
}
}
}
}
8.switch-case
/*
switch(变量) {
case 值1:
case 值2:
case 值3:
default:
}
1.根据变量的值,选择相应的case去判断,一旦满足case条件,就执行case相应的语句,
如果没有break;会继续执行其下的case语句
2.default:是可选的,而且位置是灵活的
3.变量可以是:char byte short int 枚举 String(jdk1.7)
*/
class TestSwitch1 {
public static void main(String[] args) {
String season = "spring";
int i = 4;
switch(season) {
case "spring":
System.out.println("zero");
break;
case "summer":
System.out.println("one");
break;
case "autumn":
System.out.println("two");
break;
case "winter":
System.out.println("three");
break;
default:
System.out.println("other");
break;
}
}
}
9.作业
/*
作业:当男方高:180cm以上;财富:一千万以上;帅:是。
三个条件同时满足:我要嫁给他;
有一个以上满足:嫁吧
都不满足:不嫁
*/
import java.util.Scanner;
class Work {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("请输入身高: ");
int high = s.nextInt();
System.out.println('\n'+"请输入财富: ");
double wage = s.nextDouble();
System.out.println('\n'+"是否帅:");
boolean b = s.nextBoolean();
if(high>=180 && wage >= 10000000 && b==true){
System.out.println("我要嫁给他");
}else if(high>=180 || wage >= 10000000 || b==true){
System.out.println("嫁吧");
}else {
System.out.println("不嫁");
}
}
}