运算符
对数据进行运算
分类
算术运算符 逻辑运算符 赋值运算符 三目运算符(三元运算符) 位运算符(了解)
算术运算符
+:加法 -:减法 *:乘法 /:除法 除数不能为0 %:取余 ++:自增 ++在前 先自增再参与运算 ++在后 先参与运算再自增 --:递减 --在前 先递减再参与运算 --在后 先参与运算再递减 优先级: 有括号先算括号中 有乘除先算乘除 从左向右依次运算 注意:可以给整型与浮点型使用
逻辑运算符
< 小于 <= 小于等于 > 大于 >= 大于等于 == 等于 基本数据类型判断值是否相同 引用数据类型判断内存地址是否相同 (不能判断字符串内容是否相同) != 不等于 基本数据类型判断值是否不相同 引用数据类型判断内存地址是否不相同 (不能判断字符串内容是否不相同) & 与 同真为真,有假为假 && 短路与 同真为真,有假为假 效率比&高 &&与&的区别 & true & false & true & flase ... 逐个获取计算结果 && true && false && true && false ... 遇到false直接结束 | 或 有真为真,全假为假 || 短路或 有真为真,全假为假 效率比|高 ! 非 非真为假,非假为真(取反) 注意: 最终结果只能是boolean型 条件表达式:最终结果为boolean型的算数式都是条件表达式 与,或,非不加括号最后运算
赋值运算符
= 赋值 将等号右边的值赋值给左边的变量 += 加等 -= 减等 *= 乘等 /= 除等 %= 取余等 注意:等号两边数据类型要相同
三目运算符
条件表达式?值1:值2 当条件表达式为true,取值1,当条件表达式为false,取值2 值1与值2的数据类型要相同 可以使用变量 条件表达式: 使用逻辑运算符连接,结果为boolean型的表达式称为条件表达式 获取3个数的最大值 int a = 10; int b = 20; int c = 19; int max = a > b ? a : b; max = max > c ? max : c; System.out.println(max); System.out.println((a > b ? a : b) > c ? (a > b ? a : b) : c);
位运算符(了解)
& int a = 3; inb b = 2; int c = a&b; a 11 b 10 c 10 2 | int a = 3; int b = 2; int c = a|b; a 11 b 10 c 11 3 ! int a = 3; !a a 11 !a 00 0 ^ int a = 3; int b = 2; int c = a^b; a 11 b 10 c 01 1 << int a = 3; a << 2; a 11 左移2位 1100 12 >> int a = 3; a >> 2; a 11 右移2位 00 0
数据类型转换
小类型转换为大类型 --> 自动转换 int num = 10; long l = num; 注意: 小类型与大类型运算,结果为大类型 double d = 10 + 0.0; 大类型转换为小类型 --> 强制类型转换 小类型 变量名 = (小类型)要转换的变量或数据; long l = 10l; int a = (int)l; int i = 128; byte b = (byte)i; //结果是-128 注意: 强制转换会导致数据丢失 小写字母对应的数字:97~122 大写字母对应的数字:65~90
进制转换(了解)
二进制: 0,1 八进制: 0,1,...,7 十进制: 0,1,...,9 十六进制: 0,1,...,9,a,b,c,d,e,f 十进制转二进制 除2,余数倒读 十进制转八进制 除8,余数倒读 十进制转十六进制 除16,余数倒读 二进制转十进制 10100 --> 2^4 + 2^2 = 20 八进制转十进制 26 --> 2*8 + 6 = 22 十六进制转十进制 AF --> 10*16 + 15 = 175
字符串判断内容是否相同
boolean b = 字符串1或字符串变量1.equals(字符串2或字符串变量2); String s1 = "Hello"; String s2 = "World"; boolean b = s1.equals(s2);//false boolean b = s1.equals("World");//false boolean b = "Hello".equals(s2);//false boolean b = "Hello".equals("World");//false
字符串连接符
+ int i = 10; String s1 = "1"; String s2 = i + s1; // "101" String s1 = 1 + 2 + "3"; // "33" String s2 = "1" + 2 +3; // "123"
转义字符
特殊含义的字符 \' 含义: ' \" 含义: " \\ 含义: \ \n 含义: 换行 \t 含义: 制表
键盘录入
Scanner 使用步骤: 1.导包 import java.util.Scanner; 2.创建Scanner对象 Scanner sc = new Scanner(System.in); 3.等待用户输入,并获取用户输入结果(可以重复使用多次) 让用户输入字符串 String str = sc.next(); 让用户输入整数 int a = sc.nextInt(); 注意: str, a对应的内容就是用户输入的内容 next()或nextInt()都会阻塞程序,直到用户输入
软件作用
1.解决现实生活中的问题 2.虚拟一个世界
分支语句
Java中的语句分类
顺序语句 代码从上向下依次执行 分支语句 提供多个分支只能选择一个执行 循环语句 重复执行一段代码
分支语句
作用: 判断 分类: if 特点: 可以判断内容是否相同,也可以判断区间 switch 特点: 只能判断值是否相同,效率稍微比if快 注意: 只能判断8个基本数据与String的数据是否值相等
if
if(条件表达式){ ... } if(条件表达式){ ... }else{ ... } if(条件表达式1){ ... } else if(条件表达式2){ ... } . . . else if(条件表达式n){ ... } else{ ... } 总结: if必须有 else可有可无,最多一个,必须在if的末尾 else if可有可无,可以有多个 if(条件表达式1){ ... } [else if(条件表达式2){ ... } . . . else if(条件表达式n){ ... } else{ ... }] 注意: []中的内容可有可无 if中可以使用if(if的嵌套)
switch
switch(变量){ case 值1: ... break; case 值2: ... break; . . . case 值n: ... break; default: ... //当变量的值不等于以上常量时,执行此处代码 break; } break: 跳出当前代码块 {}: 代码块
作用域
变量声明的大括号,就是变量的作用域
练习
//1.使用变量记录两个数,分别是10与11.1.计算两数之和
class Work {
public static void main(String[] args){
int a = 10;
double b = 11.1;
double sum = a + b;
System.out.println("两数之和为:" + sum);
}
}
//2,将字符A转换为数字打印输出
class Work {
public static void main(String[] args){
int a = 'A';
System.out.println("字符A转换为数字后是:" + a);
}
}
//3.将字符Z转换为数字打印输出
class Work {
public static void main(String[] args){
int a = 'Z';
System.out.println("字符Z转换为数字后是:" + a);
}
}
//4.将数字98转换为字符
class Work {
public static void main(String[] args){
char ch = (char)98;
System.out.println("数字98转换为字符是:" + ch);
}
}
//5.按照格式打印一下内容
// 打印内容格式[name:xx,age:xx,个性签名:"xxxxx"];
// 要求:分别使用三个变量记录姓名,年龄与个性签名,最后拼接打印
class Work {
public static void main(String[] args){
String name = "张三";
int age = 18;
String sign = "这是第5题";
System.out.println("[name:" + name + ",age:" + age + ",个性签名:\"" + sign + "\"]");
}
}
/*
6,笔算一下题目
题目1
int a = 10;
int b = 2;
int c = a + (++a)+(b++);
求c的结果
c的结果是 10 + 11 + 2 = 23;
题目2
计算99对应的2进制,8进制,16进制的值 11100011 143 63
计算2进制101100对应的十进制,8进制,16进制的值 44 54 2c
*/
//7.用户输入账号密码,如果账号是admin,密码是123456显示登录成功,否则显示登录失败
import java.util.Scanner;
class Work {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入账号:");
String admin = sc.next();
System.out.print("请输入密码:");
String password = sc.next();
if(admin.equals("admin") && password.equals("123456")) {
System.out.println("登陆成功");
}
else
{
System.out.println("登陆失败");
}
}
}
//8.满200打8折,会员在打8折
import java.util.Scanner;
class Work{
public static void main(String[] args){
//满200打8折,会员再打8折
Scanner sc = new Scanner(System.in);
System.out.println("请输入消费金额:");
int money = sc.nextInt();
double newMoney = money;
System.out.println("是否为会员(y/n):");
String isVip = sc.next();
if(money >= 200){
newMoney = money * 0.8;
if(isVip.equals("y")){
newMoney *= 0.8;
}
System.out.println("本次应付:" + money + ", 本次实付:" + newMoney);
}else{
if(isVip.equals("y")){
newMoney = money * 0.8;
}
System.out.println("本次应付:" + money + ", 本次实付:" + newMoney);
}
}
}
/*
9.小程序助你破产
需求:
当今社会,节日很多,如何给女朋友(老婆)送什么礼物让人头疼,所以使用程序解决该问题
分析:
元旦 红包
元宵 元宵
情人节 鲜花
女神节 化妆品
劳动节 踏春
儿童节 游乐场
七夕节 逛吃
中秋节 月饼
重阳节 登山
国庆节 旅游
双11 清空购物车
双12 清空购物车
平安夜 苹果
狂欢夜 玩
春节 红包
开斋节 吃饭
要求:
用户输入节日,显示对应的礼物
如果节日不存在收录的,显示暂未收录
*/
import java.util.Scanner;
class Work {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入节日:");
String festival = sc.next();
switch(festival){
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;
case "七夕节":
System.out.println("礼物为逛吃");
break;
case "中秋节":
System.out.println("礼物为月饼");
break;
case "重阳节":
System.out.println("礼物为登山");
break;
case "国庆节":
System.out.println("礼物为旅游");
break;
case "双11":
System.out.println("礼物为清空购物车");
break;
case "双12":
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;
}
}
}
/*
11,快递员送货
0~50 开除
50~200 罚款
200~1000 正常工资
1000~3000 1.1倍工资
3000~ 1.5倍工资
*/
import java.util.Scanner;
class Work {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入送货件数:");
int num = sc.nextInt();
if(num >= 0 && num <50) {
System.out.println("开除");
}
else if(num >= 50 && num < 200) {
System.out.println("罚款");
}
else if(num >= 200 && num < 1000) {
System.out.println("正常工资");
}
else if(num >= 1000 && num < 3000){
System.out.println("1.1倍工资");
}
else if(num >= 3000) {
System.out.println("1.5倍工资");
}
else
{
System.out.println("输入信息有误");
}
}
}
/*
12,输入考试成绩,显示区间(满分100)
0~59
60~70
71~84
85~100
<0
>100
*/
import java.util.Scanner;
class Work {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("请输入考试成绩:");
int grade = sc.nextInt();
if(grade >= 0 && grade <60) {
System.out.println("不及格");
}
else if(grade >= 60 && grade <=70) {
System.out.println("及格");
}
else if(grade >= 71 && grade < 85) {
System.out.println("良好");
}
else if(grade >= 85 && grade <= 100){
System.out.println("优秀");
}
else
{
System.out.println("输入成绩有误");
}
}
}