Java基础第三天
Java基础第三天
1.1赋值运算符
符号: =
(1)当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
(2)支持连续赋值。
扩展赋值运算符: +=, -=, *=, /=, %=
思考1: short s = 3;
s=s+2; ①
s+=2; ②
①和②有什么区别?
扩展赋值运算符不改变数据类型
思考2:
boolean b1 = false;
//区分好==和=的区别。
if(b1=true)
System.out.println("结果为真");
else
System.out.println("结果为假");
思考3:
int i = 1;
i *= 0.1;
System.out.println(i);//
i++;
System.out.println(i);//
案例:
//赋值运算符:= += -= *= /= %=
class GetValue
{
public static void main(String[] args)
{
//int i2 = 10;
//i2 += 3;
//i2 -= 3;
//i2 *= 3;
//i2 /= 3;
//i2 %= 3;
//System.out.println(i2);
/*boolean b1 = false;
if(b1==true){
System.out.println("结果为真");
}else{
System.out.println("结果为假");
}
int i = 1;
i *= 0.1;
System.out.println(i);
i++;
System.out.println(i);
int i1 = 10;
i1 += 3;
short s = 10;
s= (short)(s+1);
int i2 = 12;
i2 %= 5;
System.out.println(i1);
System.out.println(s);
System.out.println(i2);
*/
boolean b1 = false;
if(b1==true){
System.out.println("结果为真");
}else{
System.out.println("结果为假");
}
}
}1.2比较运算符
比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=” 。
&—逻辑与 | —逻辑或 !—逻辑非
&& —短路与 || —短路或 ^ —逻辑异或
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
异或( ^ )与或( | )的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!
案例:
//逻辑运算符: & && | || ! ^
class TestLogic
{
public static void main(String[] args)
{
/*int x = 1;
int y = 1;
if(x++==2&++y==2){
x=7;
}
System.out.println("x="+x+",y="+y);//x=2,y=2
int x = 1,y = 1;
if(x++==2&&++y==2){
x = 7;
}
System.out.println("x="+x+",y="+y);//x=2,y=1
int x = 1,y = 1;
if(x++==1|++y==1){
x = 7;
}
System.out.println("x="+x+",y="+y);//x=7,y=2
int x = 1,y = 1;
if(x++==1||++y==1){
x = 7;
}
System.out.println("x="+x+",y="+y);//x=7,y=1
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);
boolean b = false;
//& 与 && 的区别:&:不管左边是true还是false,右端都会进行运算。
// &&:当左端为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时,右端照样做运算。
// ||:当左端为true时,右端不再进行运算。
//我们在使用时,选择:||
boolean a = true;
int i3 = 10;
if(a | i3++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i3);//11
int i4 = 10;
if(a || i4++ > 0){
System.out.println("今天天气很晴朗");
}else{
System.out.println("难得没有雾霾");
}
System.out.println(i4);//10
}
}1.4位运算符
位运算符:<< >> >>> | & ~ ^
class TestBit
{
public static void main(String[] args)
{
int i1 = 31;
System.out.println(i1<<3);//248
System.out.println(i1<<28);
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
}
}class TestExer1
{
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 = m ^ n;
System.out.println("m:"+m+"n:"+n);
}
}表达式1和表达式2为同种类型
三元运算符与if-else的联系与区别:
1)三元运算符可简化if-else语句
2)三元运算符要求必须返回一个结果。
3)if后的代码块可有多个语句
练习: 获取两个数中的较大数
获取三个数中的较大数
三元运算符:(条件表达式)? 表达式1 : 表达式2;
要求:表达式1与表达式2为同种数据类型。
既然是运算符,就一定会有运算的结果,结果的数据类型与表达式1,2的类型一致。
三元运算符在一定程度上可以与if-else互换。(三元运算符一定可以转换为if-else,反之不成立。)
class TestSanYuan
{
public static void main(String[] args)
{
int i = 30;
int j = 20;
String max = (i>j) ? "i大":(i == j)?"i等于j":"j大";
System.out.println("max="+max);
if(i>j){
System.out.println("i大,i="+i);
}else if(i==j){
System.out.println("i=j,i,j="+j);
}else{
System.out.println("j大,j="+j);
}
int m = 20;
int n = 10;
int k = 39;
int max1 = (m > n) ? m : n;
int result = (max1 > k) ? max1 : k;
System.out.println(result);
}
}2.0程序流程控制
循环结构
程序从上到下逐行的执行,中间没有任何判断和跳转。
分支结构
根据条件,选择性地执行某段代码。
有if...else和switch两种分zhi语句。
循环结构
根据循环条件,重复性的执行某段代码。
有while、do...while、for三种循环语句。
注:JDK1.5提供了foreach循环。方便的遍历集合、数组元素。
//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);
}
}
案例:
从键盘输入小明的期末成绩。
当成绩为100分时,奖励一辆BMW;
当成绩为(80,99]时,奖励一个台iphone5s;
当成绩为[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 && score <= 99){
System.out.println("奖励一台iPhone5s");
}else if(score >=60 && score <= 80){
System.out.println("奖励一本书");
}else{
System.out.println("什么奖励也没有");
}
}
}
}import java.util.Scanner;
class TestIf2
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
System.out.println("请输入第一个整数");
int num1 = s.nextInt();
System.out.println("请输入第二个整数");
int num2 = s.nextInt();
System.out.println("请输入第三个整数");
int num3 = s.nextInt();
if(num1 > num2){
if(num1 > num3){
if(num2 > num3){
System.out.println(num3+","+num2+","+num1);
}else{
System.out.println(num2+","+num3+","+num1);
}
}else{
System.out.println(num2+","+num1+","+num3);
}
}else{
if(num3 < num1){
System.out.println(num3+","+num1+","+num2);
}else{
if(num3 > num2){
System.out.println(num1+","+num2+","+num3);
}else{
System.out.println(num1+","+num3+","+num2);
}
}
}
}
}原文地址:http://12426495.blog.51cto.com/12416495/1885233