byte b1 =1;//1为int类型的数字字面量,但是1在byte类型的取值范围里,所以可以直接赋值byte b2 =128;//报错原因:128为int类型的数字字面量,但是128不在byte类型的取值范围里,所以必须强转//128 -- int -- 4字节 -- 32位//0000,0000,0000,0000,0000,0000,1000,0000//(byte)128 -- byte -- 1字节 -- 8位//1000,0000byte b2 =(byte)128;System.out.println(b2);//-128int i =12345678901;//报错原因:12345678901为int类型的数字字面量,但是该数字超过了int类型的取值范围所以报错long i =12345678901L;//12345678901L为long类型的数字字面量,该数字没有超过了long类型的取值范围所以不报错
i++、++i的区别
int a =8;int b =(a++)+(++a)+(a*10);// b = 8 + 10 + 10*10System.out.println(b);//118int i =0;
i = i++;System.out.println(i);//0int num =10;
num++;System.out.println(num);//11//注意两道题的区别
赋值运算符
short s =1;
s = s+1;//会报错,s+1的结果是int类型short s =1;
s +=1;// s = (short)(s+1); -- 底层实现有个强转的过程//注意:不同类型数据之间赋值会报错//经验:凡是赋值运算,先看两侧数据类型是否相同、//算数运算符,注意两数的数据类型和最终结果的数据类型//注意:+=,-=,*=、/=、%= 内含强转
三目运算符
在控制台输入三个数字,由小到大输出(1<2<3)
Scanner scan =newScanner(System.in);System.out.println("请输入第一个数字:");int a = scan.nextInt();System.out.println("请输入第二个数字:");int b = scan.nextInt();System.out.println("请输入第三个数字:");int c = scan.nextInt();//最大值int max =(a>b)?a:b;
max =(max>c)?max:c;//最小值int min =(a<b)?a:b;
min =(min<c)?min:c;//中间值int mid = a+b+c-max-min;//输出System.out.println(min +"<"+ mid +"<"+ max);//此种题型注意中间值的算法int a =5;System.out.println((a<5)?10.9:9);//9.0char x ='x';//ASCII - 120int i=10;System.out.println(false?i:x);//120char x ='x';//ASCII - 120System.out.println(false?100:x);//xSystem.out.println(false?65536:x);//120/*
注意:
三目运算符的返回值规则:
值1和值2都是常量的情况:输出结果后,要将结果的数据类型转型成取值范围较大的那个数据的数据类型
值1和值2都是变量的情况:输出结果后,要将结果的数据类型转型成取值范围较大的那个数据的数据类型
值1和值2一个是常量一个是变量的情况:
如果值1在值2类型的取值范围内:就按照值2的类型进行返回数据
如果值1不在值2类型的取值范围内:就按照值1的类型进行返回数据
*/
//需求:百米赛跑,跑入15秒内的同学进入到总决赛,根据性别分别输出"恭喜进入到男子组决赛"或者是"恭喜进入到女子组决赛"importjava.util.Scanner;publicclassTest{publicstaticvoidmain(String[] args){Scanner scan =newScanner(System.in);System.out.println("请输入成绩:");double second = scan.nextDouble();if(second >0&& second <15){System.out.println("请输入性别:");String sex = scan.next();//输入字符串if(sex.equals("男")){//判断两个字符串是否相等System.out.println("恭喜进入到男子组决赛");}elseif(sex.equals("女")){//判断两个字符串是否相等System.out.println("恭喜进入到女子组决赛");}else{//用户可能乱输入性别System.out.println("性别异常");}}elseif(second >=15){System.out.println("重在参与");}else{//用户可能输入负数System.out.println("成绩异常");}
for循环
//循环录入5次int类型的数字,输出最大值importjava.util.Scanner;publicclassTest09{publicstaticvoidmain(String[] args){Scanner scan =newScanner(System.in);System.out.println("请输入第1个数字:");int max = scan.nextInt();//把第一个数字认为是最大值 for(int i =2;i<=5;i++){System.out.println("请输入第"+ i +"个数字:");int num = scan.nextInt();if(num > max){//说明用户输入的数字比max更大
max = num;}}System.out.println("最大值为:"+ max);}}//此类型题目,可把输入的第一个值当成最大值//最值,总和,个数用for循环
打印图形
publicclassTest01{publicstaticvoidmain(String[] args){* i=0** i=1*** i=2**** i=3***** i=4for(int i =0;i<5;i++){for(int j =0;j<=i;j++){System.out.print("*");}System.out.println();}***************for(int i =0;i<5;i++){for(int j =0;j<5-i;j++){System.out.print("*");}System.out.println();}***************for(int i =0;i<5;i++){for(int k =0;k<i;k++){System.out.print(" ");}for(int j =0;j<5-i;j++){System.out.print("*");}System.out.println();}***************for(int i =0;i<5;i++){for(int k =0;k<4-i;k++){System.out.print(" ");}for(int j =0;j<i+1;j++){System.out.print("*");}System.out.println();}* i=0 i*2+1*** i=1 i*2+1***** i=2 i*2+1******* i=3 i*2+1for(int i =0;i<4;i++){for(int k =3;k>i;k--){System.out.print(" ");}for(int j =0;j<i*2+1;j++){System.out.print("*");}System.out.println();}****************for(int i =0;i<4;i++){for(int k =0;k<i;k++){System.out.print(" ");}for(int j=0;j<7-2*i;j++){System.out.print("*");}System.out.println();}************for(int i =0;i<4;i++){for(int k =3;k>i;k--){System.out.print(" ");}for(int j =0;j<i*2+1;j++){//第一行、最后一行、每一行的第一列、每一行的最后一列if(i==0|| i==3|| j==0|| j==i*2){System.out.print("*");}else{System.out.print(" ");}}System.out.println();}************for(int i =0;i<4;i++){for(int k =0;k<i;k++){System.out.print(" ");}for(int j=0;j<7-2*i;j++){//第一行、最后一行、每一行的第一列、每一行的最后一列if(i==0|| i==3|| j==0|| j==7-2*i-1){System.out.print("*");}else{System.out.print(" ");}}System.out.println();}
打印空心菱形
for(int i =0;i <5;i++){//i表示空心菱形上半部分行数;类似于金字塔行数for(int j =0;j <(5-1-i);j++){//j控制每行"*"前面的空格数System.out.print(" ");}for(int k =0;k <(2*i+1);k++){//k控制要打印的"*"的个数if(i ==0){//如果是第一行则将"*"全部打印System.out.print("*");}elseif(k ==0||k ==(2*i)){//如果要打印的"*"是第一个或最后一个则 //打印出来System.out.print("*");}else{//如果要打印的"*"不是第一个或最后一个则打印空格System.out.print(" ");}}System.out.println();}//以上打印的是空心菱形的上半部分。for(int i =0;i <4;i++){//空心菱形的下半部分的行数比上半部分少一行;比如上半部分是5行,下半部分为4行才能构成菱形for(int j =0;j <(i+1);j++){//j控制每行"*"前面的空格数System.out.print(" ");}for(int k =0;k <2*(4-i)-1;k++){//k控制要打印的"*"的个数if(i ==3){//如果是最后一行则将"*"全部打印System.out.print("*");}elseif(k ==0||k ==2*(3-i)){//如果要打印的"*"是第一个或最后一个则打印出来System.out.print("*");}else{//如果要打印的"*"不是第一个或最后一个则打印空格System.out.print(" ");}}System.out.println();}}}
九九乘法表
publicclassTest01{publicstaticvoidmain(String[] args){//版本1for(int i =1;i<=9;i++){for(int j =1;j<=i;j++){System.out.print(j +"x"+ i +"="+(i*j)+"\t");}System.out.println();}//版本2for(int i =1;i<=9;i++){for(int k =1;k<i;k++){System.out.print("\t");}for(int j = i;j<=9;j++){System.out.print(i +"*"+ j +"="+(i*j)+"\t");}System.out.println();}
for循环和break
//循环录入同学5门课的成绩并计算平均分,如果某分数录入为负,停止录入并提示。importjava.util.Scanner;publicclassTest04{publicstaticvoidmain(String[] args){Scanner scan =newScanner(System.in);boolean flag =true;//true-正常录入 false-非正常录入double sum =0;for(int i =1;i<=5;i++){System.out.println("请输入第"+ i +"门成绩:");double score = scan.nextDouble();if(score <0){//分数为负数,结束当前循环
flag =false;break;}
sum += score;}if(flag){double avg = sum/5;System.out.println("平均分为:"+ avg);}else{System.out.println("录入的分数为负数,停止录入");}//注意此种题型的做法
for循环和continue
//循环录入5名Java课的学生成绩,统计分数大于等于80分的学生比例。
解决方案1:
importjava.util.Scanner;publicclassTest04{publicstaticvoidmain(String[] args){Scanner scan =newScanner(System.in);int num =0;//记录大于等于80分学生的人数for(int i =1;i<=5;i++){System.out.println("请输入第"+ i +"名学生的成绩:");double score = scan.nextDouble();if(score >=80){
num++;}}System.out.println("大于等于80分学生的比例为:"+ num/5.0*100+"%");
解决方案2:
Scanner scan =newScanner(System.in);int num =0;//记录大于等于80分学生的人数for(int i =1;i<=5;i++){System.out.println("请输入第"+ i +"名学生的成绩:");double score = scan.nextDouble();if(score <80){continue;}
num++;}System.out.println("大于等于80分学生的比例为:"+ num/5.0*100+"%");//注意运用continue的反向思维//注意此题中num/5.0和num/5的区别