目录
一、类型转换
1.转换规则以及强转隐患
低到高:byte-short-int-long-float-double,默认转
高到低:double-float-long-int-short-byte,强转
示例:
public class TypeChange{
public static void main(String[] args){
byte a = 6;
short b =a;
int c = b;
long d = c;
float e = d;
double f = e;//由低到高是默认转
System.out.println(d);
System.out.println(f);
long dd = (long)f;//由高到低是强转,注意这里的格式右边赋予的值要有“(数据类型)”
short bb = (short)c;//与要转的目标类型一致
System.out.println(dd);
System.out.println(bb);
}
}
强转隐患
(1)由高到低数据过大就会截断(注意:这里与day02里各种数据类型的范围有关系)
(2)小数转整数会取整
(3)字符与数据互转,数据完整(char的取值范围为65535)
(4)boolean只有true与false,boolean类型不能互转
示例:
public class TypeChange1{
public static void main(String[] args){
byte a = (byte)496;//超出了byte的范围,产生截断
System.out.println(a);
int b = (int)2.8;//小数转整数,取整
System.out.println(b);
char c = 97;
int d = (int)c;
System.out.println(d);
char f = 97;//字符所赋予的值可以转换为整数
int e =f;
System.out.println(e);
}
}
二、运算符
1.算术运算符
(1)+、-、*、/、%、++、--
(2)i++:先输出i,后i+1 i--:先输出i,后i-1 ++i:先使得赋值的i+1后,再输出i --i:先使得赋值的i-1后,再输出i
示例:
public class Suanshu{
public static void main(String[] args){
int a = 5+1;
System.out.println(a);//6
System.out.println(a/2);//3
System.out.println(a*2);//12
System.out.println(++a);//7
System.out.println(a--);//7
System.out.println(--a);//5//特别注意,这里是个易错点
}
}
2.赋值运算符
(1)基本赋值:=
(2)复合赋值:+=、-=、*=、/=、%=
示例:
public class Fuzhi{
public static void main(String[] args){
int a = 6;
System.out.println(a);//6
a -=3;//a=a-3
System.out.println(a);//3
a %=3;//a=a/3的余数
System.out.println(a);//0
}
}
3.关系运算符
符号:>、>=、<、<=、==、!=
结果:结果为true或者false
示例:
public class Guanxi{
public static void main(String[] args){
int a = 6;
System.out.println(6>3);
System.out.println(6>=3);
System.out.println(6<3);
System.out.println(6<=3);
System.out.println(6!=3);
}
}
4.关系运算符
符号:&&、||、!、&、|
&&:两边都为true,则为true;第一位为false,则不会执行第二位
||:一边为true,则为true;第一位为true,则不会执行第二位
!:取反,结果为true,输出为false
&:第一位为false,仍然执行第二位
|:第一位为true,仍然会执行第二位
示例:
public class Guanxi2{
public static void main(String[] args){
boolean a=true;
System.out.println(true&&(a=false));//false
System.out.println(false&(a=false));//false
System.out.println(a);
System.out.println(true||false);//true
System.out.println(true|(a=false));//true
System.out.println(a);//false,注意这里的结果与上一行a=false的关系
}
}
5.三目运算符
概念:(关系表达式)?操作数1:操作数2
关系表达式成立就是操作数1,否则为操作数2
示例:
public class Sanmu{
public static void main(String[] args){
int d = 6;
int e = 7;
int max = (d<e)?e:d;
int min = (e<d)?e:d;
System.out.println("最大值:"+max);
System.out.println("最小值:"+min);
}
}
三、类型提升与控制台录入
1.类型提升
注意事项:
(1)结果为最高的类型
(2)任意类型与字符串拼接都市字符串
2.控制台录入
概念:可以从DOS中输入内容,在程序中接收,是面向对象的操作,要记住它的步骤(这一部分要牢记手动输入内容)
(1)导包
import java.util.Scanner;
(2)实例化控制台对象
Scanner sc = new Scanner(System,in);
System.out.println("请输入内容")
string a = sc.nextString();//int a = sc.nextInt();//double a = sc.nextDouble();//char a = sc.next().charAt()//注意最后char的部分
(3)调用方法获取值
System.out.println(a);
四、IF分支
1.IF单分支
示例:
import java.util.Scanner;
public class If{
public static void main(String[] args){
System.out.print("请输入百分制成绩:");//从控制台手动输入数字
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=60){
System.out.println("成绩合格");
}//如果输入的条件符号if()里的则执行输出,如果不符合条件则不执行
}
}
2.IF双分支
示例:
import java.util.Scanner;
public class If{
public static void main(String[] args){
System.out.print("请输入百分制成绩:");//从控制台手动输入数字
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=60){
System.out.println("成绩合格");
}else{
System.out.println("成绩不合格");
}
}
}
3.IF多分支
示例:
import java.util.Scanner;
public class If{
public static void main(String[] args){
System.out.print("请输入百分制成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(score>=90&&score<=100){
System.out.println("优秀");
}else if(score>=80&&score<=90){
System.out.println("良好");
}else if(score>=70&&score<=80){
System.out.println("一般");
}else if(score>=60&&score<=70){
System.out.println("及格");
}else if(score<=60){
System.out.println("不及格");
}
}
}
4.IF的嵌套
if语句中又包含if
注意事项:先执行外层的if语句,在执行内层的if
示例:
import java.util.Scanner;
public class CharType {
public static void main(String[] args){
System.out.print("请输入百分制成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if(0<=score&&score<=100) {
if(score>=90&&score<=100){
System.out.println("优秀");
}else if(score>=80&&score<=90){
System.out.println("良好");
}else if(score>=70&&score<=80){
System.out.println("一般");
}else if(score>=60&&score<=70){
System.out.println("及格");
}else {
System.out.println("不及格");
}/*注意:这里在最后一个else{}结尾要有一个括号表示内层的if循环语句结束,往往最后一个条
件可不用条件说明,剩下的就是*/
}else {//注意:内层循环结束后,要有一个外层循环的else{}结束外层的if语句
System.out.println("请输入正确的数字");
}
}
}
五、switch分支
示例:
import java.util.Scanner;
public class Switch{
public static void main(String[] args){
System.out.println("请输入江南四大才子姓名:");
Scanner sc = new Scanner(System.in);
String name = sc.next();
switch(name){
case "唐伯虎"://值:byte、short、int、char、String
System.out.println("点秋香");
break;
case "祝枝山"://跳出switch
System.out.println("画家");
break;
case "文征明":
System.out.println("书法");
break;
case "徐征卿":
System.out.println("散文家");
break;
default:/*注意:类似if分支里的else,如果前面的都不满足,则执行default里面的内容
切记if多、双分支以及switch一定要加else与break跳出循环*/
System.out.println("你的输入有误~");
}
}
}
六、练习与思考
输入会员积分与购物金额,根据积分的不同享受不同的折扣,并输出结账金额
import java.util.Scanner;
public class Homework4{
public static void main(String[] args){
System.out.println("请输入会员积分:");
System.out.println("请输入购物金额:");
Scanner sc = new Scanner(System.in);//这里的new后面没有.是空格
double jifen = sc.nextDouble();
double jie = sc.nextDouble();
if(jifen<2000){
System.out.println("结账金额:"+jie*0.9);
}else if(jifen<4000){
System.out.println("结账金额:"+jie*0.8);
}else if(jifen<8000){
System.out.println("结账金额"+jie*0.7);
}else if(jifen>8000){
System.out.println("结账金额:"+jie*0.6);
}
}
}