运算符:对常量和变量进行操作的符号
常用的几类运算符:
1.赋值运算符:=
2.算术运算符:+ - * / %
3.比较(关系)运算符:> < >= <= == !=
4.逻辑运算符:&&(双与) ||(双或) &(单与) |(单或) !(非)
5.一元运算符:++(自增) --(自减)
6.三元运算符:表达式1:表达式2?值1:值2;如果表达式为true则取值1,为false则取值2
1.赋值运算符(=):将右边的值赋给左边的变量
int a=10;
int b=a;(复制)
a=20;(覆盖)
2.算术运算符(+ - * / %)
-
加法/拼接 +
一:+:两种用法
1:进行加法运算;2具有拼接功能
二:+进行拼接应该应该具备的要求:
要求1:必须要有字符串参与运算,如果没有字符串参与,则直接做加法运算
要求2:字符串在右边的时候,先要进行其它的数据的加法运算,然后再与字符串进行拼接,而最终的结果也是字符串!
三:实例说明
//字符串拼接
System.out.println(1+"哈哈"); //"1哈哈"
//要求1:必须要有字符串参与运算
//要求2:只有当字符串在右边的时候,先要进行其他数据的加法运算,然后再与字符串进行拼接
//要求2:字符串的右边不管有多少个+,都是进行字符串的连接,而左边进行加法运算
System.out.println(1+"2"); //12
System.out.println(1+2+"3"); //33
System.out.println(1+"2"+3); //123
System.out.println(1+"2"+3+4); //1234
System.out.println("3+3="+3+3); //3+3=33
System.out.println(1+2+3+4+5+6+7); //28
System.out.println(1+"2"+3+4+5+6+7); //1234567
System.out.println(1+2+3+"4"+5+6+7); //64567
-
取商 /
结论1:如果/左右两边都是整数,那么得到的结果也是整数
结论2:如果/左右两边只要有一个是小数,那么得到的结果就是小数
结论3:如果被除数为0,那么结果也为0
结论4:如果除数为0,那么直接会报错(ArithmeticException)算术异常
实例说明:
System.out.println(5/2); //2
System.out.println(5.0/2); //2.5
System.out.println(5/2.0); //2.5
System.out.println(0/2); //0
System.out.println(0/2.0); //0.0
//System.out.println(5/0); //ArithmeticException(算术异常)
* System.out.println(2/5); //0
-
取模 %
// %取余和取商的用法基本一致,但是有一点不一样,当左边比右边小的时候,除得到的结果是0,而模得到的结果是左边本身
System.out.println(5%2); //1
System.out.println(5.0%2); //1.0
System.out.println(5%2.0); //1.0
System.out.println(0%2); //0
System.out.println(0%2.0); //0.0
* System.out.println(2%5); //2
-
减法-和乘法:和数学中的用法一致,但是必须是数字参与运算
需求:求1234的个十百千位
思路:使用上述算术运算符中的取余和取模(Remember)
int a=1234;
int ge=a/1%10; // %10得到的是最后的位数4
int shi=a/10%10; // /10是将1234的4去掉了,a=123,接着%10得到最后的位数3
int bai=a/100%10; // /100是将1234的34去掉了,a=12,接着%10得到最后的位数2
int qian=a/1000%10; // /1000是将1234的234去掉了,a=1,接着%10得到最后的位数1
3.比较运算符(> < >= <= == !=):最终得到的结果是Boolean类型,要么是true,要么是false。
实例说明:
System.out.println(5>3); //true
System.out.println(5<3); //false
System.out.println(5>=3); //true
System.out.println(5!=3); //true
特别注意:
//==是比较运算符,用于判断基本数据类型的值是否相等
System.out.println(5==5);
// System.out.println(5=5); //意外的类型,"="是赋值,而"=="才是比较
4.逻辑运算符:&&(双与) ||(双或) &(单与) |(单或) !(非)
作用:用来连接条件用的
实例说明:
System.out.println(5>3&&5>7); //false
System.out.println(5>3||5>7); //true
System.out.println(!(5>3)); //false
面试题:双与,双或和单与,单或的区别是什么??
双与和单与都是并且的含义,双或和单或都是或者的含义,但是双与和双或有短路效果
解释:什么是短路效果:假如有成百上千个条件给我们去判断,
当我们使用&&的时候,判断到一个条件是false,那么就不需要要继续判断下面的条件是否是true/false,最终的结果一定是false
而当我们使用&的时候,如果判断一个条件为false,我们还要接着判断下面所有的条件,当所有的条件判断完之后才出结果
所以:双与,双或相对于单与,单或而言,缩短了运行时间,提高了程序的运行效率,这在实际编程开发过程中是很有用的
拓展:那么&和|是不是就没用了呢? 从本质上而言是的,&&是&的一个升级版本,但是还有一个区别就是&和|可以用来作位运算,而&&和||就不行*/
5.一元运算符: ++(自增) --(自减),用来操作一个变量用的
//当++和--单独使用的时候,放在前面和后面没有区别
实例说明:
/*int a=1;
a++;
System.out.println(a);*/
//当++和--参与运算的时候,就有很大的区别了
//i++:变量先参与运算,然后再自增
//++i:变量先要自增1,然后再参与运算
//i--:变量先参与运算,然后再自减
//--i:变量先要自减1,然后再参与运算
实例说明:
int a1=1;
System.out.println(a1); //1
System.out.println(a1++); //运算并不止局限于+-*/,输出同样属于运算 //1 i++
System.out.println(a1); //这时a1=2 //2
System.out.println(++a1); //这时先自增,然后输出 //3 ++i
System.out.println(a1); //3
System.out.println(a1--); //3 i--
System.out.println(a1); //2
System.out.println(--a1); //1 --i
System.out.println(a1); //1
//运算与自增
int a2=1;
int b=a2++;
System.out.println(a2); //2 先计算b=a2
System.out.println(b); //1
//输出综合
int c=1;
int d=(c++)+2-(++c)+(c--)+3-(--c);
System.out.println(d);
6.三元运算符
表达式1:表达式2?值1:值2;如果表达式为true则取值1,为false则取值2
实例说明:求两个数的最大值
int a=10;
int b=20;
int max=a>b?a:b; //20
boolean flag=a>b?true:false; //false
流程控制语句
//1.单个的if语句结构
/* 单个if语句的特点
1.一次只能判断一个条件
2.单个的if语句都是互相独立的,互不影响
*/
int age0=22;
if(age0>=22){
System.out.println("恭喜你,可以结婚了");
}
if(age0<=22){
System.out.println("只能老老实实敲代码!");
}
//2.if else语句结构
/* if..else语句的特点
1.同时进行两个条件判断
2.else后面隐含了一个与条件相反的条件
*/
int age1=20;
if(age1>=22){
System.out.println("恭喜你,可以结婚了");
}else{
//else隐含了一个与条件判断相反的条件
//满足age<22做的事情
System.out.println("只能老老实实敲代码!");
}
//if语句的第三种格式:多重if
//给定一个人的成绩,判断此人的成绩的等级 成绩只能够0--100
int score=95;
if(score>=0&&score<60){
System.out.println("没及格,小伙子还需要加油!!");
}else if(score>=60&&score<70){ //隐含了上一层的条件
System.out.println("及格,小伙子挺危险,还需努力");
}else if(score>=70&&score<80){ //隐含了上一层的条件,但是上一层的条件隐含了上上一层的条件,所以隐含了上两层的条件
System.out.println("良,小伙子还算不错");
}else if(score>=80&&score<90){
System.out.println("优,小伙子考的还行");
}else{
System.out.println("小伙子你要上天啊,真乃人中之龙也!");
}
//总结: 因为如果多重if语句如果满足条件则不必须继续执行下去,
而if..else语句如果if的条件满足则不必要执行else语句中的内容,
而单个的if语句,如果满足了if条件,还需要继续执行下一个if,只到所有的if全部执行完。
//最后:多重if语句比if..else语句效率要高,而if..else比单个的if语句执行效率要高
扫描器(键盘录入)Scanner
作用:通过扫描器接收自己输入的数据,实现人机交互
步骤(三步走):
第1步:导入扫描器(特定的代码)
//import java.util.Scanner;(第一种写法,必须写在真正代码的第一行,注释不算)
//import java.util.*;(第二种写法)
第2步:生成新的扫描器
Scanner sc=new Scanner(System.in); //只需要写一次,下面如果有多次输入,不必重复定义
第3步:接收数据
//3.1接收输入的整数
//最好要一个友好提示:请输入一个xx类型的数据
System.out.print("请输入一个int类型的数据:");
int a=sc.nextInt();
System.out.println("输入的整形数据:"+a);
//3.2接收double类型的数据
/* System.out.print("请输入一个double类型的数据:");
double b=sc.nextDouble();
System.out.println("输入的double类型的数据:"+b);*/
//3.3第一种接收String类型的数据nextLine()
/*System.out.print("请输入一个string类型的数据:");
String c=sc.nextLine();
System.out.println("输入的string类型的数据:"+c);*/
//3.4第二种接收String类型的数据next();
System.out.print("请输入一个string类型的数据:");
String d=sc.next();
System.out.println("输入的string类型的数据:"+d);
//3.5接收Boolean类型的数据
System.out.print("请输入一个boolean类型的数据:");
Boolean e=sc.nextBoolean();
System.out.println("输入的boolean类型的数据:"+e);
需求:请输入3个int类型的数据,判断最大值,只允许用单个if语句
思路:打擂台,先从三个人中找一个人当擂主,然后去第二个人去挑战擂主,如果赢,第二个人就成为擂主,如果输,第一个人还是擂主。然后第三个人接着去挑战擂主,如果赢,第三个人就成为擂主,如果输,擂主还是擂主!!
import java.util.*;
public class Demo_Max {
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();
System.out.println("请输入第三个数据:");
int c=sc.nextInt();
int max=a;
if(max
课后习题练习:
package com.HomeWork;
/*1.定义三个变量,保存名字,性别,年龄, 爱好
提示:
姓名: 自己定义
性别: 自己定义
年龄: 自己定义
爱好: 自己定义
输出格式:(举列如下)
姓名 性别 年龄 爱好
a b c d*/
public class Hw1 {
public static void main(String[] args) {
String name="张三";
String sex="男";
int age=18;
String hobby="篮球";
System.out.println("姓名\t性别\t年龄\t爱好");
System.out.println(name+"\t"+sex+"\t\t"+age+"\t\t"+hobby);
}
}
package com.HomeWork;
/*2、根据天数(46)计算周数和剩余的天数*/
public class Hw2 {
public static void main(String[] args) {
int day=46;
int week;
int diethday;
week=day/7;
diethday=day%7;
System.out.println("周数为:"+week);
System.out.println("剩余天数:"+diethday);
}
}
package com.HomeWork;
/*3.定义的整数142857,
把这个数字分解成两组数字142,857
计算这两个数和的结果;
再把142857分解成三组数字,
14,28,57再输出三组数字之和*/
public class Hw3 {
public static void main(String[] args) {
int a=142857;
int num1;
int num2;
int sum1,sum2;
num1=a/1000;
num2=a%1000;
System.out.println("num1="+num1);
System.out.println("num2="+num2);
sum1=num1+num2;
System.out.println("sum1="+sum1);
int num3;
int num4;
int num5;
num3=a/10000;
num4=a%10000/100;
num5=a%100;
System.out.println("num3="+num3);
System.out.println("num4="+num4);
System.out.println("num5="+num5);
sum2=num3+num4+num5;
System.out.println("sum2="+sum2);
}
}
package com.HomeWork;
/*4.定义一个整数,代表88个小时,
计算88个小时等于多少天零多少个小时*/
public class Hw4 {
public static void main(String[] args) {
int num=88;
int day;
int hour;
day=num/24;
hour=num%24;
System.out.println("88小时是"+day+"天");
System.out.println("剩余:"+hour+"h");
}
}
package com.HomeWork;
/*5.定义一个整形变量比如:int a = 12345;然后依次输出各个位上的数字;*/
public class Hw5 {
public static void main(String[] args) {
int a=12345;
int ge,shi,bai,qian,wan;
ge=a/1%10;
shi=a/10%10;
bai=a/100%10;
qian=a/1000%10;
wan=a/10000%10;
System.out.println(ge);
System.out.println(shi);
System.out.println(bai);
System.out.println(qian);
System.out.println(wan);
}
}
package com.HomeWork;
/* 6.某个公司采用公用电话传递数据,
数据是四位的整数,在传递过程中是加密的,
加密规则如下:求出各个位数的数字,再将第一位和第四位交换,第二位和第三位交换。
请给数字(4567)加密。*/
public class Hw6 {
public static void main(String[] args) {
int num=4567;
System.out.println("加密前num="+num);
int ge,shi,bai,qian;
ge=num/1%10;
shi=num/10%10;
bai=num/100%10;
qian=num/1000%10;
int a;
a=ge;
ge=qian;
qian=a;
a=shi;
shi=bai;
bai=a;
int numember=qian*1000+bai*100+shi*10+ge*1;
System.out.println("加密后num="+numember);
}
}
package com.HomeWork;
/*7、键盘输入一个int型的数据,判断这个数是
否能被2整除,如果能被2整除,
那么输出“这个数是偶数”,
如果不能被2整除,输出“这个数是奇数”。
提示:8%2==0 10%2==0 9%2=1
*/
import java.util.*;
public class Hw7 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个int类型的数据:");
int num=sc.nextInt();
if(num%2==0){
System.out.println("这个数是偶数");
}else{
System.out.println("这个数是奇数");
}
}
}
package com.HomeWork;
/*8.键盘录入两个整数,计算他们的和,如果和大于100,
就输出这两个数的乘积,如果和小于100,
就输出这两个数的商.*/
import java.util.*;
public class Hw8 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个整数:");
double num1=sc.nextDouble();
System.out.println("请输入第二个整数:");
double num2=sc.nextDouble();
double sum=num1+num2;
if(sum>100){
System.out.println(num1*num2);
}else{
if(num1>num2){
System.out.println(num1/num2);
}else {
System.out.println(num2/num1);
}
}
}
}
package com.HomeWork;
/*9.键盘录入三个int类型的数字
2.要求:
(1)求出三个数中的最小值值并打印
(2)求出三个数的和并打印
*/
import java.util.*;
public class Hw9 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入第一个数:");
int num1=sc.nextInt();
System.out.println("请输入第二个数:");
int num2=sc.nextInt();
System.out.println("请输入第三个数:");
int num3=sc.nextInt();
int min=num1;
if(min>num2){
min=num2;
}
if(min>num3){
min=num3;
}
System.out.println("三个数中的最小数为:"+min);
int sum=num1+num2+num3;
System.out.println("三个数的和为:"+sum);
}
}