第二章(二)
1.算术运算符
算术运算符: +,-,*,/,%,++,–.在进行算数运算时使用,其中自增和自减,++a先运算后取值,a++先取值在运算.
/*
算术运算符
+ - * / % ++ --
+ 加法 字符串连接
- * / % 只能进行算术运算
*/
public static void main(String[] args) {
int a = 10;
int b = 5;
char c = 'd';
String d = "100";
String e = "aa";
System.out.println(a+b);
System.out.println(a+c);//整数+char(int)
System.out.println(a+b+d);// 数值+(连接)字符串==字符串
System.out.println(d+e);//字符串+字符串=字符串
System.out.println(a-b);
System.out.println(a-c);
//++ 每++一次 在原来的基础上+1 再赋值
//单独使用时++在前/后没有区别,在混合运算时++在前先自增后运算,反之则先运算后自增
int x = 5;
int y = ++x;
System.out.println(x);
System.out.println(y);
}
2.关系(比较)运算符
/*
== != 结果为ture false
> < >= <= 数值与数值
*/
public static void main(String[] args){
int a=10;
int b=5;
int c=3;
System.out.println(a==b);
String x="abc";
String y="cde";
System.out.println(x==y);
}
3.逻辑运算符
&—逻辑与 | —逻辑或 !—逻辑非 && —短路与 || —短路或 ^ —逻辑异或
public static void main(String[] args){
int a=1;
int b=2;
int c=3;
// & 与运算 都为真才为true 当左边为假的时候 右边会继续进行运算
System.out.println(a>b&a<c);
System.out.println(a>b&a>c);
System.out.println(a<b&++a>c); //a=11
System.out.println(a);
// &&与运算(短路与) 都为真才为true 当左边为假的时候 直接结束运算
System.out.println(a<b&&++a>c); //a=10
System.out.println(a);
// !非运算 取反
System.out.println(!true);
// |或运算 有true即为true 都为false才为false
// ||或运算 (短路或) 当左边为真的时候 直接结束运算
System.out.println(a>b||++a<c); //a=10
System.out.println(a);
// ^异或运算 当左右都为true 结果为false
}
作业:不使用第三个变量,交换两个变量的值
public static void main(String[] args) {
int a=5,b=10;
a=a+b;
b=a-b;
a=a-b;
System.out.println("a="+a);
System.out.println("b="+b);
}
4.赋值运算符
具体包括以下几种: = ,+=,-=,*=,/=
/*
赋值运算符 =
扩展赋值运算符 +=, -=, *=, /=, %=
*/
public static void main(String[] args){
short a=3;
a=a+2;//类型转换出现问题
a+=2; //自动转换类型
// 分辨==和=
boolean b=false;
if(b=true){
System.out.println(true);
}else{
System.out.println(false);
}
}
5.条件运算符
/*
条件运算符
(条件表达式)?表达式1:表达式2
*/
public static void main(String[] args){
int a = 80;
String r = (a>=80)?"及格":"不及格";
System.out.println(r);
}
6.位运算
日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.
7.表达式的运算顺序
8.控制台输入
/*在程序中交互式输入数据,使用Scanner取得一个字符串或一组数字,
使用标准输入串System.in.Scanner的next()方法用以取得用户输入的字符串;
nextInt()将取得的输入字符串转换为整数类型;
同样,nextFloat()转换成浮点型;nextBoolean()转换成布尔型.*/
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.print("请输入一个数字:");
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
String b = sc.next();
}
}
9.if条件语句
在if后面的括号中写明所需要判断的条件,具体的语句包含在{ }中.
public static void main(String[] args) {
int a = 80;
if(a >= 60){
System.out.println("考试及格!");
}else{
System.out.println("考试不及格!");
}
}
条件运算符与if-else的联系与区别:
条件运算符可简化if-else语句,条件运算符要求必须返回一个结果; if后的代码块可有多个语句.
10.switch语句
多分支选择语句,根据表达式的值,执行某分支的操作或某分支及之后分支的操作.
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
System.out.println("请输入你的成绩:");
Scanner scanner = new Scanner(System.in);
int a=scanner.nextInt();
int c=a/10;
switch (c){
// switch后的表达式可以为byte,int,short,int,char,枚举类型,也可以使用String类型
case 9:
System.out.println("优秀!");break;
case 8:
System.out.println("良好!");break;
case 7:
System.out.println("中等!");break;
case 6:
System.out.println("及格!");break;
default:
System.out.println("不及格!");
}
}
}
if语句与switch语句的区别:在具体的判断数量不多的情况下,switch语句效率会更高一点.对区间或者结果为boolean类型判断,使用if,if的使用范围更广.
循环语句:在某些情况中,需要对特定的代码反复进行执行,此为循环语句.
11.while&do while语句
while语句表达式为while(表达式){语句}.先判断逻辑表达式的值,若true,能执行后面的语句.
do while语句表达式为do{语句}while(表达式),先执行语句,然后在判断逻辑表达式的值.
public class Main {
public static void main(String[] args) {
// while循环 先判断逻辑表达式 后执行语句
int a=1;
/*while(a<5){
System.out.println(a);
a++;
}*/
// do-while 先执行语句 再判断
do{
System.out.println(a);
a++;
}while(a<5);
}
}
12.for循环
for循环语句表达式为 for(表达式1; 表达式2; 表达式3){ 语句; … ; },表达式用;隔开.
for语句执行过程:先执行表达式1,然后执行表达式2,若表达式2为true,则执行循环语句,接着计算表达式3,再判断表达式2的值;依此重复下去,直到表达式2的值=false.
public class Main {
public static void main(String[] args) {
// for 循环
/*
输入三行三列*
***
***
***
*/
//int i = 0;//int定义在表达式的前面时则为全局变量,在整个main()方法中都是可以使用的,不需要再重新定义
for (int i = 0; i < 3; i++) {
//int定义在for循环中的时候则为局部变量,当在for循环以外使用的时候需要重新定义
for (int j = 0; j <3 ; j++) {
System.out.print("*");
}
System.out.println();
}
}
}
13.break & continue语句
public static void main(String[] args){
// break 终止
for (int i = 0; i < 5; i++) {
if(i==3){
break;
}
System.out.println(i);
}
// continue 跳过当次循环
for (int i = 0; i < 6; i++) {
if(i==4){
continue;
}
System.out.println(i);
}
}
循环嵌套:将循环放在另一个循环体中,就是嵌套循环,如while,if,do while,都可为外层嵌套或者内层嵌套.