目录
2.1运算符
运算符分为算数运算符,逻辑运算符,赋值运算符,三目运算符(三元运算符),位运算符
1.算数运算符
+:相加
-:相减
*:乘法
/:除法 0不能作为被除数
%:取余
++:自增 ++在前,先自增后运算,++在后,先运算在自增
--:递减 --在前先递减,在运算,--在后先运算在递减
优先级:先有括号算括号里的,先乘除后加减,从左向右依次算。
如:
int a=10;
int b=2;
int c=a+(++a)+(b++);
//求c值
第一个a1=10,第二个a2,++在前所以先自增成为了11后,参与运算,是11,最后的b++在后,所以先运算依旧是2,之后才自增,所以c为23.
2.逻辑运算符
<:小于
<=:小于等于
>:大于
>=:大于等于
==:判断基本数据类型是否相同,判断引用数据类型的地址是否相同,不能判断字符串内容是否相同
!=:判断基本数据类型是否不同,判断引用数据类型的地址是否不同,不能判断字符串内容是否不同
&:与,都为真时为真,只要有一个是假就为假
&&:短路与,与&的含义相同。但区别于&的是,&&效率比&高,在判断一系列的概念时,&会全部遍历一遍再做出判断,而&&在遇到第一个假概念时就会直接判断整个概念为假
|:或,都为假时为假,只要有一个真那就都为真
||:短路或,与|含义相同。效率比|高。
!:非,真变假,假变真。
逻辑运算最终结果是boolean型,最终结果为Boolean型的算数式都是条件表达式
与,或,非不加括号最后运算,其运算优先级较低。
3.赋值运算符
=:赋值,将右边的数赋予左边
+=:加等 例如:a=a+b 其含义与a+=b相同
类似的还存在-= *= /= %=
4.三目运算符:
语法 条件表达式?值1:值2
当条件表达式为真时取值1,为假时取值2
class sanmu{
public static void main(String[] agus){
int a=18;
int b=20;
String str=18>20?"a大":"a小";
System.out.println(str);
}
}
注意:值1与值2数据类型要一致
5.位运算符
位运算符所用比较少,大体思路是把数字转化为二进制后再进行每一位的运算
&按位与
0101011
1010101 // 0101011&1010101
0000001
| 按位或
0101010
1010100 //0101010|1010100
1111110
!取反
1101010// !1101010
0010101
^按位异或 相同为0,不同为1
1010101
0010001 //1010101^0010001
1000100
<<:左移 10101<<2 左移两位 1010100
>>:右移 111010>>2 右移两位 1110
2.2数据类型转换
1.小类型转换为大类型为自动转换,小类型与大类型运算时结果为大类型。
例如:
class sanmu{
public static void main(String[] agus){
int a=18;
long b=a;//整形向长整型转换,占字节少的向占字节多的转换,自动转换
double c=a+0.0;//整形向双精度转换,可以看到结果为字节数多的
System.out.println(b);
System.out.println(c);
}
}
2.大类型向小类型转换,此转换需要强制转换
语法格式: 小类型 变量名=(小类型)需要转换的变量或数据
class sanmu{
public static void main(String[] agus){
double c=9.88;
int a=(int)c;
int i=128;
byte b=(byte)i;
System.out.println(a);
System.out.println(c);
System.out.println(i);
System.out.println(b);
}
}
可以看到大类型强制转换为小类型后数据丢失了。
2.3判断字符串内容是否相同
语法: boolean 变量名 = 字符串1或字符串变量1.equals(字符串2或字符串变量2)
class sanmu{
public static void main(String[] agus){
String str1="hallo";
String str2="world";
String str3="hallo";
boolean a=str1.equals(str2);
boolean b=str1.equals(str3);
System.out.println(a);
System.out.println(b);
}
}
相同返回true,不同返回false
2.4字符串连接符
+
例如
class sanmu{
public static void main(String[] agus){
int i=10;
String str1="1";
String str2=i+str1;
String str3=1+2+"4";
String str4="1"+2+8;
System.out.println(str2);
System.out.println(str3);
System.out.println(str4);
System.out.println(1+2+"5");//先1+2=3,之后和字符5连接,所以变为了35
System.out.println("5"+2+3);//都是先左后右,5-2-3变为了字符串
}
}
2.5传意字符
概念:特殊含义的字符
\' 含义: '
\" 含义: "
\\ 含义: \
\n 含义:换行
\t 含义:制表
2.6键盘录入
记住就完事了
对应的类:Scanner
使用步骤:
1.导包,位置要在类以外,import java.util.Scanner;
2.创建Scanner对象,Scanner 变量名1 = new Scanner(System.in);
3.等待用户输入,并获取结果,语法:
让用户输入字符串 String 变量名2 = 变量名1.next();
让用户输入整数 int 变量名2 = 变量名1.nextInt();
注意next或nextInt都会阻塞程序,直到用户输入
例子:
import java.util.Scanner;
class sanmu{
public static void main(String[] agus){
Scanner a=new Scanner(System.in);
System.out.println("请输入字符");
String a1=a.next();
System.out.println("你输入的是"+a1);
Scanner b=new Scanner(System.in);
System.out.println("请输入数字");
int b1=a.nextInt();
System.out.println("你输入的是"+b1);
}
}
2.7分支语句
1.分支语句
顺序语句:代码从上向下依次执行
分支语句:提供多个分支只能选一个执行
循环语句:重复执行一段代码
分支语句作用就是判断
2.if语句
特点:可以判断内容是否相同,也可以判断区间
结构
if(条件表达式){
当条件表达式为true,执行此处
}
if else结构
if(条件表达式){
当条件表达式为true,执行此处代码
}else{
当条件表达式为false,执行此处代码
}例
一件物品满200打8折,会员在打8折
import java.util.Scanner;
class home9{
public static void main(String[] agus){
Scanner a=new Scanner(System.in);
System.out.println("请输入价钱");
int a1=a.nextInt();
System.out.println("你输入的是"+a1);
double c=a1*0.8*0.8;
double d=a1*0.8;
System.out.println("是否会员?y/n");
Scanner b=new Scanner(System.in);
String f=b.next();
boolean g=f.equals("y");
if(g){
if(a1>=200){
System.out.println("原本需要"+a1+"元");
System.out.println("现在需要需要"+c+"元");
}else{
System.out.println("原本需要"+a1+"元");
System.out.println("现在需要需要"+d+"元");
}
}else{
if(a1>=200){
System.out.println("原本需要"+a1+"元");
System.out.println("现在需要需要"+d+"元");
}else{
System.out.println("需要"+a1+"元");
}
}
}
}
例2:不同的分数评价不一样
import java.util.Scanner;
class home12{
public static void main(String[] agus){
Scanner a=new Scanner(System.in);
System.out.println("请输入分数");
int a1=a.nextInt();
if(0<a1&&a1<59){
System.out.println("不及格");
}else if(60<=a1&&a1<70){
System.out.println("一般");
}else if(70<=a1&&a1<85){
System.out.println("良好");
}else if(85<=a1&&a1<=100){
System.out.println("优秀");
}else if(a1<=0||100<a1){
System.out.println("大嘴巴子");
}
}
}
3.switch
如果不写break,程序会把break之前的代码都执行一遍
switch(变量){
case 值1:
当变量的值等于常量1时执行此处代码
break;
case 值2:
当变量的值等于常量1时执行此处代码
break;
......
case 值n:
当变量的值等于常量1时执行此处代码
break;
default:
剩余情况执行此处
break;
}
例,过不同的节日,选不同的礼物
import java.util.Scanner;
class home10{
public static void main(String[] agus){
Scanner a=new Scanner(System.in);
System.out.println("请输入节日");
String a1=a.next();
switch(a1){
case "元旦":
System.out.println("红包");
break;
case "元宵":
System.out.println("元宵");
break;
case "情人节":
System.out.println("鲜花");
break;
case "女神节":
System.out.println("化妆品");
break;
case "劳动节":
System.out.println("踏春");
break;
case "儿童节":
System.out.println("游乐场");
break;
default:
System.out.println("不知道");
break;
}
}
}