运算符相关概念
运算符:首先是它就是一个符号,是什么符号呢,对变量和常量进行操作的符号。
表达式:常量或变量被运算符连起来的式子,当然是连起来要符合java语法的式子
运算符我们会碰到哪些嘞:
算术运算符
+、-、*、/、%(取余) 区别: /获取两个数据相除的商,%获取两个数据相除的余数 例子:6/4=1 ;6%4=2
注意:整数相除只能得到整数,想获得小数就得有浮点数的参与。
System.out.println(6/4); //结果为1 System.out.println(6/4.0); //结果为1.5
(1)字符参与加法运算:字符在计算机中存储所表示的数据值来运算
为什么字符会有数值:ASCII码是美国(国家)信息交换标准(代)码,一种使用7个或8个二进制位进行编码的方案,最多可以给256个字符(包括字母、数字、标点符号、控制字符及其他符号)分配(或指定)数值
‘a’ 97
‘A’ 65
‘o’ 48
int a=5;
char ch='a';
System.out.println(a+ch); //结果为102
(2)字符串参与加法运算:实质是字符串的拼接,结果一定是字符串,但
System.out.println(10+20+"hello"); //结果:30hello System.out.println("hello"+10+20); //结果:hello1020
拼接也要考虑从左往右的运算,第一个先做了整数的加法,后续又继续了字符串的拼接。第二个先做了字符串的拼接hello10,再继续也是字符串拼接hello1020。
自增自减运算符
++,–
作用:就是自己+1或是-1
怎么用:单独使用一个变量的时候放在变量前或放在变量后面都是可以。
public static void main(String[] args) {
int a=10;
int b=10;
//a++;
//b--;
++a;
--b;
System.out.println("a="+a);//a=11
System.out.println("b="+b);//b=9
}
但是参与其他操作时,
++在变量后面,先把变量a值赋给b后再自身加1;
++在变量前面,先把变量a自身加1,再赋值给b.
int a=10;
int b=a++;
System.out.println("b="+b);//结果:b=10
int a=10;
int b=++a;
System.out.println("b="+b);//结果:b=11
扩展赋值运算符:
基本的赋值运算符=
扩展的赋值运算符+=、-= :把运算符左边的数据和右边的数据进行运算,然后把结果赋值给左边
int a=10;
a += 20;//左边值a上一步已被赋值为10
System.out.println("a="+a);//结果为30
区别:a+=20 与 a=a+20
a+=20等同于a=(a的数据类型)(a+20),扩展的赋值运算符隐含了强制类型转换。
short a=1;
a+=4;//a+4 short类型a参与运算首先会提升为int类型,结果也为int类型,但是扩展运算符会将其强制转换为short类型。结果不会报错。
System.out.println(a);
short a=1;
a=a+4;//a+4 short类型a参与运算首先会提升为int类型,结果也为int类型,但是a是个short类型,把int类型的值赋给short类型就会报错。
System.out.println(a);
关系运算符
==,!=,>=,<=
关系运算符操作完成的结果是布尔值。
逻辑运算符
用于连接关系表达式,JAVA中不能写成x<3<6,要写成x>3&&x<6.
&&:逻辑与,有false则false
||:逻辑或,有true则true
!:逻辑非,true则false,false则true
用法:
int a=1;
int b=2;
int c=3;
System.out.println((a>b)&&(a>c));//false&&false 结果:false
System.out.println((a<b)||(a>c));//true||false 结果:true
System.out.println(!(a<b)); //结果为false
三元运算符
关系表达式?表达式1:表达式2;
执行流程:A:计算关系表达式的值,看结果是true还是false.B:如果是true,表达式1就是结果;如果是false,表达式2就是结果。
int a = 1;
int b = 2;
int c = (a>b)?a:b;
System.out.println("c:"+c);//因为a>b为false,所以结果为c:2
三元运算符练习题:比较两个整数是否相同
int a = 2;
int b = 2;
boolean c = (a==b)?true:false;
System.out.println("c:"+c);//结果为true
Scanner键盘录入学习
步骤:
1.导包:import java.util.Scanner;
2.创在这里插入代码片
建键盘录入对象: Scanner sc=new Scanner(System.in)
3.获取数据: int i =sc.nextInt();
package homework2;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个整数");
int b = sc.nextInt();
System.out.println("请输入第二个整数");
int a = sc.nextInt();
int sum=a+b;
System.out.println(sum);
}
}
流程控制语句
顺序结构
选择结构(if语句)
if语句格式1
if(关系表达式){
语句体;
}
先执行关系表达式的运算,看是true还是false;如果是true就执行语句体,如果是false就不执行语句体。
if语句格式2
if(关系表达式){
语句体1;
}else{
语句体2;
}
执行流程:
首先判断关系表达式看结果是 true还是false,true执行语句体1,false执行语句体2.
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入a");
int a=sc.nextInt();
if(a%2==0){
System.out.println("a是偶数");
}else{
System.out.println("a是奇数");
}
}
}
if语句格式3
if(关系表达式1){
语句体1;
}else if(关系表达式2){
语句体2;
}
else if(关系表达式3){
语句体3}
……
else{
语句体n+1}
import java.sql.SQLOutput;
import java.util.Scanner;
public class demo1 {
public static void main(String[] args) {
System.out.println("请输入数值:");
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
int b=0;
if(a<100 && a>0){
b=a;
System.out.println("您输入的数绝对值是它本身哦:");
}else if(a==0){
b=0;
System.out.println("您输入的数既不是整数也不是负数,但绝对值也是它本身尼");
}else if(a<0 && a>-100){
b=-a;
System.out.println("您输入的数绝对值是它的相反数");
}else{
System.out.println("抱歉呢,您输入的数不在我计算范围之内,出错撩");
}
System.out.println("b="+b);
}
}
if语句比较两个最大值
import java.util.Scanner;
public class demo2 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in) ;
System.out.println("请输入第一个整数");
int a=sc.nextInt();
System.out.println("请输入第二个整数");
int b=sc.nextInt();
int max;
if(a>b){
max=a;
}
else{
max=b;
}
System.out.println("max="+max);
}
}
测试数据是否严谨,应考虑到以下情况:
1.正确数据
2.边界数据
3.错误数据
if语句成绩对应级别
import java.util.Scanner;
public class demo2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入你的成绩");
int i=sc.nextInt();
if(i>100||i<0){
System.out.println("输入有误");
}else if(i>=80 && i<=100){
System.out.println("你很优秀欸");
}else if(i<80 && i>=60){
System.out.println("很不错嘛");
}else if(i<60){
System.out.println("还需努力哦同学");
}
}
}
选择结构(switch语句)
句式:
表达式可以是byte,short,int,char,DK5以后可以是枚举,JDK7以后可以是字符串。
case后的值是用来与表达式的值进行匹配的。
break表示终端。
default是当所有的值和表达式不匹配时就执行default对应的内容。
步骤:
计算表达式的值,再那这个值与case后面的值进行比对,有匹配就执行对应的语句,遇break中断。若所有的case均不匹配则就执行default语句。
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
case 值3:
语句体3;
break;
……
default:
语句体n+1;
break;
}
import java.util.Scanner;
public class demo2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数1-12");
int month=sc.nextInt();
switch(month){
case 1:
System.out.println("1月");
break;
case 2:
System.out.println("2月");
break;
case 3:
System.out.println("3月");
break;
case 4:
System.out.println("4月");
break;
case 5:
System.out.println("5月");
break;
case 6:
System.out.println("6月");
break;
case 7:
System.out.println("7月");
break;
case 8:
System.out.println("8月");
break;
case 9:
System.out.println("9月");
break;
case 10:
System.out.println("10月");
break;
case 11:
System.out.println("11月");
break;
case 12:
System.out.println("12月");
break;
default:
System.out.println("你输入的数据有误");
break;
}
}
}
作业
训练案例1
键盘录入一个int类型的数据,使用三元运算符判断这个数是奇数还是偶数
import java.util.Scanner;
public class zuoye1 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入数值:");
int i=sc.nextInt();
String c= ((i%2)==0)?"偶数":"奇数";
System.out.println("数值是"+c);
}
}
训练案例2
定义一个int类型的变量,初始化值为123,求这个数的个位,十位,百位分别是多少,输出结果:123的个位是3,十位是2,百位是1
import java.util.Scanner;
public class zuoye2 {
public static void main(String[] args) {
int i = 123;
int b=0;
Scanner sc = new Scanner(System.in);
System.out.println("你想要123的哪个位数呢,请输入个位数,十位数或百位数,有惊喜哦");
String a = sc.nextLine();
switch(a){
case "个位数":
b=i%10;
break;
case "十位数":
b=(i/10)%10;
break;
case "百位数":
b=i/100;
break;
default:
System.out.println("输入有误");
}
System.out.println(a+b);
}
}
训练案例3
键盘录入一个长方形的长和宽(长和宽为int类型),计算长方形的面积和周长
import java.util.Scanner;
public class 作业3 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
System.out.println("请输入长方形的长:");
int L=sc.nextInt();
System.out.println("请输入长方形的宽:");
int W=sc.nextInt();
System.out.println("___________________________");
int S=L*W;
System.out.println("长方形的面积:"+S);
System.out.println("___________________________");
int C=2*(L+W);
System.out.println("长方形的面积:"+C);
}
}
拓展训练案例1
小明左、右手中分别拿两张纸牌(比如:黑桃10和红桃8,数字10和8可通过键盘录入),要求编写代码交换小明手中的牌.
import java.util.Scanner;
public class zuoye4 {
public static void main(String[] args) {
int left=0;
int right=0;
int temp=0;
Scanner sc=new Scanner(System.in);
System.out.println("请输入小明左手的牌:");
left=sc.nextInt();
System.out.println("请输入小明右手的牌:");
right=sc.nextInt();
System.out.println("互换前小明手中的纸牌");
System.out.println("左手的纸牌:"+left);
System.out.println("右手的纸牌:"+right);
System.out.println("_____________________________");
System.out.println("互换后小明手中的纸牌");
temp=left;
left=right;
right=temp;
System.out.println("左手的纸牌:"+left);
System.out.println("右手的纸牌:"+right);
}
}
拓展训练案例2
1.键盘录入学员张浩的3门课程(Java、SQL、Web)的成绩
2.编写程序实现:
(1)Java课程和SQL课程的分数值差
(2)3门课程的平均分
import java.util.Scanner;
public class zuoye5 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入java成绩:");
int java = sc.nextInt();
System.out.println("请输入SQL成绩:");
int SQL = sc.nextInt();
System.out.println("请输入Web成绩;");
int Web = sc.nextInt();
System.out.println("java SQL Web");
System.out.println(java+" "+SQL+" "+Web);
int sub=java-SQL;
double ave=(java+SQL+Web)/3;
System.out.println("Java和SQL的成绩差:"+sub);
System.out.println("三门课的平均分是:"+ave);
}
}
/*结果
请输入java成绩:
100
请输入SQL成绩:
60
请输入Web成绩;
80
java SQL Web
100 60 80
Java和SQL的成绩差:40
三门课的平均分是:80.0*/
拓展训练案例3
商场推出幸运抽奖活动,抽奖规则如下:
(1)键盘录入四位数字(1000-9999的数字),作为顾客的会员卡号
(2)该会员卡号(键盘录入的四位数字)各位数字之和大于20,则为幸运客户
import java.util.Scanner;
public class zuoye6 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入4位会员卡号:");
int cardID=sc.nextInt();
int a=cardID/1000;
int b=(cardID/100)%10;
int c=(cardID/10)%10;
int d=(cardID%10);
int sum=a+b+c+d;
String y=(sum>20)?"是幸运客户":"不是幸运客户";
System.out.println("会员卡号"+cardID+"各位之和:"+sum);
System.out.println("会员卡号"+cardID+y);
}
}
拓展训练案例4
根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为 3000元, 应涨工资 5000元,涨后工资 8000元".
import java.util.Scanner;
public class zuoye7 {
public static void main(String[] args) {
int y=0;
int a=0;
Scanner sc=new Scanner(System.in);
System.out.println("请输入工龄");
int workAge=sc.nextInt();
System.out.println("请输入基本工资");
int salary=sc.nextInt();
if (workAge>=0 && workAge<1){
a=200;
}else if(workAge>=1 && workAge<3){
a=500;
}else if(workAge>=3 && workAge<5){
a=1000;
}else if(workAge>=5 && workAge<10){
a=2500;
}else if(workAge>=10 && workAge<15){
a=5000;
}
y=salary+a;
System.out.println("您目前工作了"+workAge+"年,基本工资为"+salary+"元,应涨工资"+a+"元,涨后工资"+y);
}
}
/*结果:
请输入工龄
10
请输入基本工资
3000
您目前工作了10年,基本工资为3000元,应涨工资5000元,涨后工资8000*/
拓展训练案例5
模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果
import java.util.Scanner;
public class zuoye8 {
public static void main(String[] args) {
int y = 0;
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:");
int b = sc.nextInt();
System.out.println("请输入您要进行的运算(0:表示加法运算,1:表示减法运算,2:表示乘法运算,3:表示除法运算):");
int c = sc.nextInt();
switch (c) {
case 0:
y = a + b;
System.out.println(a + "+" + b + "=" + y);
break;
case 1:
y = a - b;
System.out.println(a + "-" + b + "=" + y);
break;
case 2:
y = a * b;
System.out.println(a + "*" + b + "=" + y);
break;
case 3:
y = a / b;
System.out.println(a + "/" + b + "=" + y);
break;
}
}
}
拓展训练案例6
键盘录入月份,输出对应的季节
import java.util.Scanner;
public class zuoye9 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个整数1-12");
int month=sc.nextInt();
switch(month){
case 1:
System.out.println("冬季");
break;
case 2:
System.out.println("冬季");
break;
case 3:
System.out.println("春季");
break;
case 4:
System.out.println("春季");
break;
case 5:
System.out.println("春季");
break;
case 6:
System.out.println("夏季");
break;
case 7:
System.out.println("夏季");
break;
case 8:
System.out.println("8夏季");
break;
case 9:
System.out.println("秋季");
break;
case 10:
System.out.println("秋季");
break;
case 11:
System.out.println("秋季");
break;
case 12:
System.out.println("秋季");
break;
default:
System.out.println("你输入的数据有误");
break;
}
}
}