0.回顾
- 标识符java语言中的一个符号,定义 包名、类名、方法名、变量名、参数名规范 :开发时的规范 :
- 必须以字母、数字、_、$ 组成
- 不能以数字开始
- 不能使用关键字
- 类名 大驼峰标识
- 包名 都是小写
- 方法名、变量名、参数名 遵守小驼峰标识
- 关键字 Java中征用的标识符 50个goto和const Java中的保留字
- 数据类型
- 基本类型三类八种 整数 :byte、short、int、long 默认类型 int 浮点数 :float 、double 默认类型 double 布尔型 :true 和 false
- 引用类型处理基本类型 都是应用类型
- 数据类型的转换
- 自动类型转换 隐式转换 一般是在运算中 ,进行自动转换 char、byte、short —->int —>long —>float—->double
- 强转在数值之前 加上 小括弧 进行强转 例如 : int i = 100;
byte b = (byte)i; //风险
- 变量在Java语言 可以被改变的数据 就叫变量 变量的实质是 为了存储数据 ,在内存占据一块空间 。变量的分类 :public class Test01_变量分类 {
int age ;
static String name ;
String sex ;
double money ;
//以上变量称之为 成员变量
{
//局部变量
String country = “中国”;
}
/*
@param args 方法参数 也是局部变量
/
public static void main(String[] args) {
//以下都是局部变量
String city = “上海”;
int a = 100;
float height = 180F;
System.out.println(name);
//在方法内部定义的变量 称之为 局部变量
for(int i=0;i<10;i++){
//i 也是局部变量
System.out.println(i);
}
}
}- 成员变量 —->全局变量成员变量定义在 类中 ,例如 :public class Test01_变量分类 {
int age ;
static String name ;
String sex ;
double money ;
//以上变量称之为 成员变量
} - 局部变量 局部变量 ,除了成员变量之外 都是局部变量 包括 :
- 方法内部
- 代码块
- 方法参数
- 成员变量 —->全局变量成员变量定义在 类中 ,例如 :public class Test01_变量分类 {
成员变量和局部变量的区别 :使用范围不同 ,也就是说 定义的变量是有使用范围 也叫 变量的作用域
变量的作用域是 :变量定义哪个华括弧中 ,那就可以在这个花括弧中使用
成员变量 :
如果定义成员变量 不给变量赋值 ,虚拟机会给你默认值:
整数 :0 浮点数 :0.0 char :空 ‘\u0000’ 布尔 :false 引用类型 :null
局部变量 :
必须先赋值 在使用
一 、运算符
Java语言中用于数据运算的符号,Java语言是提供运算符数量最多的语言,包含以下几类预算符。
1. 算术运算符
符号 :+、-、、/、%(取模—>求余)
作用:主要用于四则运算
优先级 : / % 高于 + -
public class Test02_算术运算符 {
/*
算术运算符 用于 四则运算
@param args
/
public static void main(String[] args) {
//加法
System.out.println(10 + 20);
int x = 100;
int y = 20;
System.out.println(x + y);
int z = 10;
System.out.println(x + y + z);
//减法
System.out.println(100- 10);
System.out.println(x - y);
System.out.println(x+40 -z);
//乘法
System.out.println(23);
System.out.println(x 10 z);
//除法 整数类型 相除 取整 表达式中带有浮点数 结果就带有小数
int a = 12;
int b = 5;
System.out.println(100 / 30); // 3
System.out.println(100 / 30.0);
System.out.println(a / b);
double d1 = 57.678;
//保留一位小数
//把浮点型 强转成 整形 直接把小数干掉
int num = (int)d1;
System.out.println(num);
int temp = (int) (d110 + 0.5);
double d2 = temp/10.0;
System.out.println(d2);
//定义一个浮点数 四舍五入 保留两位小数
double d3 = 34.4587 ; // 3445.87
int t1 = (int)(d3*100 + 0.5);
double d4 = t1 / 100.0;
System.out.println(d4);
//有下面三个成绩 求平均成绩 取整
double score1 = 87.0;
double score2 = 67.5;
double score3 = 56.8;
int avg = (int) ((score1 + score2+ score3)/3);
System.out.println(avg);
//求余 重要
System.out.println(20%6); //2
int x1 = 100;
int x2 = 30;
System.out.println(x1 % x2); //10
System.out.println(x2 % x1); //30
//取出 67 这个数字十位是几 个位 是 几
int m = 67 ;
int shi = m / 10 ;
int ge = m % 10 ;
System.out.println(“十位:”+shi +”—个位:”+ge);
// 求出 2593 每一个位置上的数字 是几
int m1 = 2593;
int qian = m1/1000;
int bai = m1%1000 /100 ;
int shi1 = m1%100 /10 ;
int ge1 = m1 % 10 ;
System.out.println(qian +”—“+bai +”—“+shi1 +”—“+ge1);
//思考题 把2593 —— 3952
}
}
2. 关系运算符
符号: > < >= <= == !=
作用: 用于数据比较大小
返回结果 :boolean (true|false)
public class Test03_关系运算符 {
public static void main(String[] args) {
// > 和 >=
System.out.println(3 > 5); //false
int a = 10 ;
int b = 10;
System.out.println(a >= b); //true
// < 和 <=
System.out.println(3 < 5); //true
int x = 10 ;
int y = 7;
System.out.println(x <= y); //false
// == 和 !=
System.out.println(2 == 2); //true
System.out.println(x == y); //false
System.out.println(x != y); //true
//判断一个年份是否是 闰年 (能被4整除并且不能被100整数 或者 能被400 整除 就是闰年)
int year = 2008 ;
System.out.println(year % 400 == 0);
System.out.println((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0));
}
}
3. 逻辑运算符
符号 : &(位与) 、&&(逻辑与)、 |(位或)、 ||(逻辑或) 、 !(逻辑非)
作用 :用于逻辑判断 (关系表达式)
返回结果 :boolean(true false)
优先级 :低于关系运算符
a | b | a & b | a &&b | a | b | a||b | !a |
---|---|---|---|---|---|---|
T | T | T | T | T | T | F |
T | F | F | F | T | T | F |
F | T | F | F | T | T | T |
F | F | F | F | F | F | T |
public class Test04_逻辑运算符 {
public static void main(String[] args) {
int a = 10 ;
int b = 34;
System.out.println(1==2 & a > b); //false
System.out.println(1==1 && a > b); //false
System.out.println(4 > 3 | a > b); //true
System.out.println(1==1 || 2 > 5 || a > b); //true
System.out.println( !(1==1)); //false
System.out.println(!(a <= b)); //false
//求出年份是否是闰年 能被4整除 但是不能被 100 整除 或者 能被400整除 的y年份 就是闰年
int year = 2002;
System.out.println((year % 4==0 && year %100 !=0) || year % 400 ==0);
// 运算的优先级 如果你想染谁优先执行 加 ()
//面试题 :& 和 && 之间的区别 | 和 || 之间的区别
/
& : 位与 他会把每一个关系表达式都计算一遍
&& :主要计算出一个表达式是 false 后面的表达式 就不会计算了 短路与
| :他会把每一个关系表达式都计算一遍
|| : 只要计算出一个表达式是 true 后面也不计算了 短路或
推荐使用 逻辑关系 && ||
/
int x = 10 ;
//System.out.println(1 == 4 && (x++ > 100));
//System.out.println(“&&x=”+x);
System.out.println(1 == 4 & (x++ > 100));
System.out.println(“&x=”+x);
}
}
4.赋值运算符
符号 : = += -= = /= %=
作用 :运算之后在赋值
优先级 :最低
public class Test05_赋值运算符 {
public static void main(String[] args) {
// = 就是赋值运算符
int x = 10;
String userName = “张三丰”;
Date birth = new Date();
//+= -= = /= %=
int num = 10;
num += 100 ; // num = num + 100;
System.out.println(num);
//int a += 10; // int a = a + 10;
String s = “北京”;
s += “,上海”;
s += “,天津”;
s += “,重庆”;
System.out.println(s);
int a = 100;
a -= 40; // a = a - 40;
int y = 10;
y = 20; // y = y10
int z = 200;
z /= 20 ; // z = z /20 ;
int m = 125 ;
m %= 20; // m = m % 25 ;
// 连接符 +
System.out.println(“m的值是:”+m); //m的值是 :5
// 任何数据类型在和 字符串类型(String)进行连接的时候,最后的结构 都会转成 字符串类型
System.out.println(“上海” +10 +20 +30 + 50); //上海10203050
System.out.println(10 +20 +30 + 50+”上海”); //110上海
//如果我想把 20000 编程字符串
int n = 20000;
String s1 = “” + n; // 字符串
String name = “张三丰”;
int age = 99;
String address = “武当山”;
//老夫名字叫 xxx ,今年贵庚 xxx 岁 ,家住在 xxxx
System.out.println(“老夫名字叫”+name+”,今年贵庚”+age+”岁,家住在”+address);
}
}
5. 位运算符(了解)
只针对二进制进行运算
符号 : 按位与 & 按位或| 异或^ 移位运算符 << >>
public class Test06_位运算符 {
public static void main(String[] args) {
//位运算符 针对二进制计算
// 1.&
/
2 & 3
0000 0010
0000 0011
0000 0010
/
System.out.println(2&3);
// 2. |
/
5 | 7
0000 0101
0000 0111
0000 0111
/
System.out.println(5|7);
// 3. ^
/
4 ^ 6
0000 0100
0000 0110
0000 0010
/
System.out.println(4^6);
// 2 — 8
/
0000 0010 — >0000 1000
/
System.out.println(2 << 2);
/
0001 0000
/
// 16 /4 16 >> 2
System.out.println(16 >> 1); // 16 /2
// 34 / 23
System.out.println(17 >> 2);
System.out.println(1 >> 20);
}
}
6.自增运算符
符号 : ++ —
作用 :用于数据的 加和减 (加一、 减一)
优先级 : 高于 算数运算符
public class Test07_自增运算符 {
public static void main(String[] args) {
// ++ 每次 加 1
/
1. 定义在变量后面
先使用 在加1
/
int a = 10 ;
System.out.println(a++); // 10 使用时 不加1
a++ ;
System.out.println(a); //12
// 12 13 14 15
System.out.println(a++ + a++ - a++ + a++); //26
System.out.println(a); //16
/
2.放置在变量的前面
先加 1 在使用
/
int b = 10;
System.out.println(++b); //11
System.out.println(b); //11
// 12 12 14 15 15
System.out.println(++b + b++ + ++b - ++b + b++); //38
System.out.println(b); // 16
// — 减 1
/
1. 放在 变量的 后面
先使用 先减 1
2. 放在变量的前面
先减 1 在使用
/
int x = 10 ;
System.out.println(—x); //9
System.out.println(x—); //9
System.out.println(x); //8
// 8 7 7 7 7
System.out.println(x— - x— + ++x + x++ - —x); //8
System.out.println(x); // 7
}
}
7.三元运算符
语法 :表达式 ? 结果1 :结果2
如果表达式 true 取 结果 1 如果是 false 取 结果2
public class Test08_三元运算符 {
public static void main(String[] args) {
//给出 两个值 取出最大值
int a = 10 ;
int b = 8;
int max = a>b ? a : b;
System.out.println(max);
// 给出三个数据 取出 最大值
int x = 23 ;
int y = 45 ;
int z = 21 ;
int k = 100;
//分步骤写
int max1 = x > y ? x :y;
int max2 = max1 > z ?max1 :z;
System.out.println(max2);
//合起来 写
int m = (x>y?x:y) > z ? (x>y?x:y) :z;
//可读性很差
int m1 = ((x>y?x:y) > z ? (x>y?x:y) :z) > k ? ((x>y?x:y) > z ? (x>y?x:y) :z) : k;
System.out.println(m1);
}
}
二、条件判断
条件判断是流程控制语句一种 :
流程控制语句 :
- 顺序执行
- 条件判断
-
1. 单条件判断
public class Test09_单条件判断 {
public static void main(String[] args) {
//定义一个价格
int price = 100 ;
if(price <= 100){
System.out.println(“我买下这个商品。。。”);
}
//定义一个年龄
int age = 17 ;
if(age >= 18){
System.out.println(“你已经成年。。。”);
}
}
}2 .多条件判断
public class Test10_多条件判断 {
public static void main(String[] args) {
//给出一个年龄
int age = 13 ;
if(age >= 18){
System.out.println(“你已经成年了。”);
}else {
System.out.println(“你未成年。”);
}
//给出两个数据 取出最大值
int a = 23 ;int b = 89;
if(a > b){
System.out.println(“最大值是—->”+a);
}else {
System.out.println(“最大值是—->”+b);
}
//录入一个成绩 score = 87 ; 输出此成绩所处的档次
//【100 — 90】优秀 【80—90) 良好 【70—-80) 中等 【60—70) 及格 小于60 不及格
int score = 87;
if(score >= 90) {
System.out.println(“优秀”);
}
if(score >= 80 && score < 90){
System.out.println(“良好”);
}
if(score >= 70 && score < 80){
System.out.println(“中等”);
}
if(score >= 60 && score < 70){
System.out.println(“及格”);
}
if(score < 60) {
System.out.println(“不及格”);
}
System.out.println(“===========================”);
if(score >= 90){
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(“不及格”);
}
// 从客户端 传入一个数字 【1—4】 根据 1 2 3 4 判断是 第几季度
int ji = 3 ;
if(ji == 1){
System.out.println(“春季”);
}else if(ji == 2){
System.out.println(“夏季”);
}else if(ji == 3){
System.out.println(“秋季”);
}else if(ji == 4){
System.out.println(“冬季”);
}else {
System.out.println(“输入错误!”);
}
}
}
无论有多少判断条件 都只能执行一个分支3.嵌套判断
public class Test11_嵌套判断 {
public static void main(String[] args) {
/
1.判断一个学生是男生 还是女生 2. 如果男生 ,分数在90以上 可以上清华 3. 如果是 女生 分数 80 以上可以上北大
*/
String sex = “男”;
int score = 85;
// 先判断是男生 还是 女生
if (sex == “男”) {
// 嵌套了一个判断
if (score >= 90) {
System.out.println(“可以上清华!”);} else {<br /> System.out.println("回家种地");<br /> }<br /> } else if (sex == "女") {<br /> // 嵌套了一个判断<br /> if (score >= 80) {<br /> System.out.println("可以上北大");<br /> } else {<br /> System.out.println("上复旦");<br /> }<br /> }
/*<br /> * 有一个 验证码 、账号 、密码 经过判断 给与提示 1. 先判断验证码 2. 判断账户 3. 判断密码<br /> * <br /> * 正确的验证码 :QWER 正确的账号 :jack 正确的密码 :123<br /> */<br /> /*String code = "QWER";<br /> String account = "jack";<br /> String upass = "123";
// 先判断 code<br /> if (code == "QWER") {<br /> // 判断账户<br /> if (account == "jack") {<br /> // 判断<br /> if (upass == "123") {<br /> System.out.println("恭喜您,登录成功,您的用户名是--->" + account);<br /> } else {<br /> // 密码错误<br /> System.out.println("密码错误!");<br /> }<br /> } else {<br /> // 账户不存在<br /> System.out.println("账户不存在!");<br /> }<br /> } else {<br /> // 验证码错误<br /> System.out.println("验证码错误!");<br /> }*/<br /> <br /> Scanner sc = new Scanner(System.in);<br /> System.out.println("请输入验证码:");<br /> String code = sc.next();<br /> System.out.println("请输入账号:");<br /> String account = sc.next();<br /> System.out.println("请输入密码:");<br /> String upass = sc.next();<br /> <br /> if("QWER".equals(code)){<br /> if("jack".equals(account)){<br /> if("123".equals(upass)){<br /> System.out.println("恭喜您,登录成功!");<br /> }else {<br /> System.out.println("密码错误!");<br /> }<br /> }else {<br /> System.out.println("账户不存在!");<br /> }<br /> }else {<br /> System.out.println("验证错误!");<br /> }<br /> <br /> }<br />}
4、Switch case
对if else 一种简化模式
//录入一个成绩 score = 87 ; 输出此成绩所处的档次
//【100 — 90】优秀 【80—90) 良好 【70—-80) 中等 【60—70) 及格 小于60 不及格
//语法
switch(变量){
case num1:
code ;
case num2:
code ;
case num3:
code ;
//….
default :
code
}
// switch中的表达式 可以使用 byte 、short 、char、int、String、枚举
public class Test12_Switch {
public static void main(String[] args) {
//从客户端 传入一个数字 【1—4】 根据 1 2 3 4 判断是 第几季度
String ji = “3” ;
switch (ji) {
case “1”:
System.out.println(“春季”);
break;
case “2”:
System.out.println(“夏季”);
break;
case “3”:
System.out.println(“秋季”);
break;
case “4”:
System.out.println(“冬季”);
break;
default:
System.out.println(“输入错误”);
break;
}
//上述情况 产生 一个 case穿透问题 解决方案 在每一个条件分支 加一个 break
//录入一个成绩 score = 87 ; 输出此成绩所处的档次
//【100 — 90】优秀 【80—90) 良好 【70—-80) 中等 【60—70) 及格 小于60 不及格
int score = 33;
switch (score / 10) {
case 10:
System.out.println(“优秀”);
break;
case 9:
System.out.println(“优秀”);
break;
case 8:
System.out.println(“良好”);
break;
case 7:
System.out.println(“中等”);
break;
case 6:
System.out.println(“几个”);
break;
default:
System.out.println(“不及格!”);
break;
}
}
}三、Scanner使用
Scanner类是Java API提供的一个工具类 ,作用可以从控制台输入数据,被Java读取
public class Test13_Scanner {
public static void main(String[] args) {
//使用Scanner 必须先创建 Scanner对象 传入一个输入流
Scanner sc = new Scanner(System.in);
//下面就可以使用 Scanner提供的功能 (方法)
/ 1. next() 读取控制台输入的数据 并且 以 tab、space 键 为结束
当你按下 tab 或者 space 键的时候 输入就结束了
是一个阻塞方法 ,不输入信息 程序就不会向下执行
/
/System.out.println(“请输入信息:”);
String info = sc.next();
System.out.println(info);/
/
2.nextLine() 以回车键为结束
/
/System.out.println(“请输入姓名:”);
String names = sc.nextLine();
System.out.println(names);
System.out.println(“请输入性别:”);
String sex = sc.next();
System.out.println(sex);*/0.回顾
标识符java语言中的一个符号,定义 包名、类名、方法名、变量名、参数名规范 :开发时的规范 :
- 必须以字母、数字、_、$ 组成
- 不能以数字开始
- 不能使用关键字
- 类名 大驼峰标识
- 包名 都是小写
- 方法名、变量名、参数名 遵守小驼峰标识
- 关键字 Java中征用的标识符 50个goto和const Java中的保留字
- 数据类型
- 基本类型三类八种 整数 :byte、short、int、long 默认类型 int 浮点数 :float 、double 默认类型 double 布尔型 :true 和 false
- 引用类型处理基本类型 都是应用类型
- 数据类型的转换
- 自动类型转换 隐式转换 一般是在运算中 ,进行自动转换 char、byte、short —->int —>long —>float—->double
- 强转在数值之前 加上 小括弧 进行强转 例如 : int i = 100;
byte b = (byte)i; //风险
- 变量在Java语言 可以被改变的数据 就叫变量 变量的实质是 为了存储数据 ,在内存占据一块空间 。变量的分类 :public class Test01_变量分类 {
int age ;
static String name ;
String sex ;
double money ;
//以上变量称之为 成员变量
{
//局部变量
String country = “中国”;
}
/*
@param args 方法参数 也是局部变量
/
public static void main(String[] args) {
//以下都是局部变量
String city = “上海”;
int a = 100;
float height = 180F;
System.out.println(name);
//在方法内部定义的变量 称之为 局部变量
for(int i=0;i<10;i++){
//i 也是局部变量
System.out.println(i);
}
}
}- 成员变量 —->全局变量成员变量定义在 类中 ,例如 :public class Test01_变量分类 {
int age ;
static String name ;
String sex ;
double money ;
//以上变量称之为 成员变量
} - 局部变量 局部变量 ,除了成员变量之外 都是局部变量 包括 :
- 方法内部
- 代码块
- 方法参数
- 成员变量 —->全局变量成员变量定义在 类中 ,例如 :public class Test01_变量分类 {
成员变量和局部变量的区别 :使用范围不同 ,也就是说 定义的变量是有使用范围 也叫 变量的作用域
变量的作用域是 :变量定义哪个华括弧中 ,那就可以在这个花括弧中使用
成员变量 :
如果定义成员变量 不给变量赋值 ,虚拟机会给你默认值:
整数 :0 浮点数 :0.0 char :空 ‘\u0000’ 布尔 :false 引用类型 :null
局部变量 :
必须先赋值 在使用
一 、运算符
Java语言中用于数据运算的符号,Java语言是提供运算符数量最多的语言,包含以下几类预算符。
1. 算术运算符
符号 :+、-、、/、%(取模—>求余)
作用:主要用于四则运算
优先级 : / % 高于 + -
public class Test02_算术运算符 {
/*
算术运算符 用于 四则运算
@param args
/
public static void main(String[] args) {
//加法
System.out.println(10 + 20);
int x = 100;
int y = 20;
System.out.println(x + y);
int z = 10;
System.out.println(x + y + z);
//减法
System.out.println(100- 10);
System.out.println(x - y);
System.out.println(x+40 -z);
//乘法
System.out.println(23);
System.out.println(x 10 z);
//除法 整数类型 相除 取整 表达式中带有浮点数 结果就带有小数
int a = 12;
int b = 5;
System.out.println(100 / 30); // 3
System.out.println(100 / 30.0);
System.out.println(a / b);
double d1 = 57.678;
//保留一位小数
//把浮点型 强转成 整形 直接把小数干掉
int num = (int)d1;
System.out.println(num);
int temp = (int) (d110 + 0.5);
double d2 = temp/10.0;
System.out.println(d2);
//定义一个浮点数 四舍五入 保留两位小数
double d3 = 34.4587 ; // 3445.87
int t1 = (int)(d3*100 + 0.5);
double d4 = t1 / 100.0;
System.out.println(d4);
//有下面三个成绩 求平均成绩 取整
double score1 = 87.0;
double score2 = 67.5;
double score3 = 56.8;
int avg = (int) ((score1 + score2+ score3)/3);
System.out.println(avg);
//求余 重要
System.out.println(20%6); //2
int x1 = 100;
int x2 = 30;
System.out.println(x1 % x2); //10
System.out.println(x2 % x1); //30
//取出 67 这个数字十位是几 个位 是 几
int m = 67 ;
int shi = m / 10 ;
int ge = m % 10 ;
System.out.println(“十位:”+shi +”—个位:”+ge);
// 求出 2593 每一个位置上的数字 是几
int m1 = 2593;
int qian = m1/1000;
int bai = m1%1000 /100 ;
int shi1 = m1%100 /10 ;
int ge1 = m1 % 10 ;
System.out.println(qian +”—“+bai +”—“+shi1 +”—“+ge1);
//思考题 把2593 —— 3952
}
}
2. 关系运算符
符号: > < >= <= == !=
作用: 用于数据比较大小
返回结果 :boolean (true|false)
public class Test03_关系运算符 {
public static void main(String[] args) {
// > 和 >=
System.out.println(3 > 5); //false
int a = 10 ;
int b = 10;
System.out.println(a >= b); //true
// < 和 <=
System.out.println(3 < 5); //true
int x = 10 ;
int y = 7;
System.out.println(x <= y); //false
// == 和 !=
System.out.println(2 == 2); //true
System.out.println(x == y); //false
System.out.println(x != y); //true
//判断一个年份是否是 闰年 (能被4整除并且不能被100整数 或者 能被400 整除 就是闰年)
int year = 2008 ;
System.out.println(year % 400 == 0);
System.out.println((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0));
}
}
3. 逻辑运算符
符号 : &(位与) 、&&(逻辑与)、 |(位或)、 ||(逻辑或) 、 !(逻辑非)
作用 :用于逻辑判断 (关系表达式)
返回结果 :boolean(true false)
优先级 :低于关系运算符
a | b | a & b | a &&b | a | b | a||b | !a |
---|---|---|---|---|---|---|
T | T | T | T | T | T | F |
T | F | F | F | T | T | F |
F | T | F | F | T | T | T |
F | F | F | F | F | F | T |
public class Test04_逻辑运算符 {
public static void main(String[] args) {
int a = 10 ;
int b = 34;
System.out.println(1==2 & a > b); //false
System.out.println(1==1 && a > b); //false
System.out.println(4 > 3 | a > b); //true
System.out.println(1==1 || 2 > 5 || a > b); //true
System.out.println( !(1==1)); //false
System.out.println(!(a <= b)); //false
//求出年份是否是闰年 能被4整除 但是不能被 100 整除 或者 能被400整除 的y年份 就是闰年
int year = 2002;
System.out.println((year % 4==0 && year %100 !=0) || year % 400 ==0);
// 运算的优先级 如果你想染谁优先执行 加 ()
//面试题 :& 和 && 之间的区别 | 和 || 之间的区别
/
& : 位与 他会把每一个关系表达式都计算一遍
&& :主要计算出一个表达式是 false 后面的表达式 就不会计算了 短路与
| :他会把每一个关系表达式都计算一遍
|| : 只要计算出一个表达式是 true 后面也不计算了 短路或
推荐使用 逻辑关系 && ||
/
int x = 10 ;
//System.out.println(1 == 4 && (x++ > 100));
//System.out.println(“&&x=”+x);
System.out.println(1 == 4 & (x++ > 100));
System.out.println(“&x=”+x);
}
}
4.赋值运算符
符号 : = += -= = /= %=
作用 :运算之后在赋值
优先级 :最低
public class Test05_赋值运算符 {
public static void main(String[] args) {
// = 就是赋值运算符
int x = 10;
String userName = “张三丰”;
Date birth = new Date();
//+= -= = /= %=
int num = 10;
num += 100 ; // num = num + 100;
System.out.println(num);
//int a += 10; // int a = a + 10;
String s = “北京”;
s += “,上海”;
s += “,天津”;
s += “,重庆”;
System.out.println(s);
int a = 100;
a -= 40; // a = a - 40;
int y = 10;
y = 20; // y = y10
int z = 200;
z /= 20 ; // z = z /20 ;
int m = 125 ;
m %= 20; // m = m % 25 ;
// 连接符 +
System.out.println(“m的值是:”+m); //m的值是 :5
// 任何数据类型在和 字符串类型(String)进行连接的时候,最后的结构 都会转成 字符串类型
System.out.println(“上海” +10 +20 +30 + 50); //上海10203050
System.out.println(10 +20 +30 + 50+”上海”); //110上海
//如果我想把 20000 编程字符串
int n = 20000;
String s1 = “” + n; // 字符串
String name = “张三丰”;
int age = 99;
String address = “武当山”;
//老夫名字叫 xxx ,今年贵庚 xxx 岁 ,家住在 xxxx
System.out.println(“老夫名字叫”+name+”,今年贵庚”+age+”岁,家住在”+address);
}
}
5. 位运算符(了解)
只针对二进制进行运算
符号 : 按位与 & 按位或| 异或^ 移位运算符 << >>
public class Test06_位运算符 {
public static void main(String[] args) {
//位运算符 针对二进制计算
// 1.&
/
2 & 3
0000 0010
0000 0011
0000 0010
/
System.out.println(2&3);
// 2. |
/
5 | 7
0000 0101
0000 0111
0000 0111
/
System.out.println(5|7);
// 3. ^
/
4 ^ 6
0000 0100
0000 0110
0000 0010
/
System.out.println(4^6);
// 2 — 8
/
0000 0010 — >0000 1000
/
System.out.println(2 << 2);
/
0001 0000
/
// 16 /4 16 >> 2
System.out.println(16 >> 1); // 16 /2
// 34 / 23
System.out.println(17 >> 2);
System.out.println(1 >> 20);
}
}
6.自增运算符
符号 : ++ —
作用 :用于数据的 加和减 (加一、 减一)
优先级 : 高于 算数运算符
public class Test07_自增运算符 {
public static void main(String[] args) {
// ++ 每次 加 1
/
1. 定义在变量后面
先使用 在加1
/
int a = 10 ;
System.out.println(a++); // 10 使用时 不加1
a++ ;
System.out.println(a); //12
// 12 13 14 15
System.out.println(a++ + a++ - a++ + a++); //26
System.out.println(a); //16
/
2.放置在变量的前面
先加 1 在使用
/
int b = 10;
System.out.println(++b); //11
System.out.println(b); //11
// 12 12 14 15 15
System.out.println(++b + b++ + ++b - ++b + b++); //38
System.out.println(b); // 16
// — 减 1
/
1. 放在 变量的 后面
先使用 先减 1
2. 放在变量的前面
先减 1 在使用
/
int x = 10 ;
System.out.println(—x); //9
System.out.println(x—); //9
System.out.println(x); //8
// 8 7 7 7 7
System.out.println(x— - x— + ++x + x++ - —x); //8
System.out.println(x); // 7
}
}
7.三元运算符
语法 :表达式 ? 结果1 :结果2
如果表达式 true 取 结果 1 如果是 false 取 结果2
public class Test08_三元运算符 {
public static void main(String[] args) {
//给出 两个值 取出最大值
int a = 10 ;
int b = 8;
int max = a>b ? a : b;
System.out.println(max);
// 给出三个数据 取出 最大值
int x = 23 ;
int y = 45 ;
int z = 21 ;
int k = 100;
//分步骤写
int max1 = x > y ? x :y;
int max2 = max1 > z ?max1 :z;
System.out.println(max2);
//合起来 写
int m = (x>y?x:y) > z ? (x>y?x:y) :z;
//可读性很差
int m1 = ((x>y?x:y) > z ? (x>y?x:y) :z) > k ? ((x>y?x:y) > z ? (x>y?x:y) :z) : k;
System.out.println(m1);
}
}
二、条件判断
条件判断是流程控制语句一种 :
流程控制语句 :
- 顺序执行
- 条件判断
-
1. 单条件判断
public class Test09_单条件判断 {
public static void main(String[] args) {
//定义一个价格
int price = 100 ;
if(price <= 100){
System.out.println(“我买下这个商品。。。”);
}
//定义一个年龄
int age = 17 ;
if(age >= 18){
System.out.println(“你已经成年。。。”);
}
}
}2 .多条件判断
public class Test10_多条件判断 {
public static void main(String[] args) {
//给出一个年龄
int age = 13 ;
if(age >= 18){
System.out.println(“你已经成年了。”);
}else {
System.out.println(“你未成年。”);
}
//给出两个数据 取出最大值
int a = 23 ;int b = 89;
if(a > b){
System.out.println(“最大值是—->”+a);
}else {
System.out.println(“最大值是—->”+b);
}
//录入一个成绩 score = 87 ; 输出此成绩所处的档次
//【100 — 90】优秀 【80—90) 良好 【70—-80) 中等 【60—70) 及格 小于60 不及格
int score = 87;
if(score >= 90) {
System.out.println(“优秀”);
}
if(score >= 80 && score < 90){
System.out.println(“良好”);
}
if(score >= 70 && score < 80){
System.out.println(“中等”);
}
if(score >= 60 && score < 70){
System.out.println(“及格”);
}
if(score < 60) {
System.out.println(“不及格”);
}
System.out.println(“===========================”);
if(score >= 90){
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(“不及格”);
}
// 从客户端 传入一个数字 【1—4】 根据 1 2 3 4 判断是 第几季度
int ji = 3 ;
if(ji == 1){
System.out.println(“春季”);
}else if(ji == 2){
System.out.println(“夏季”);
}else if(ji == 3){
System.out.println(“秋季”);
}else if(ji == 4){
System.out.println(“冬季”);
}else {
System.out.println(“输入错误!”);
}
}
}
无论有多少判断条件 都只能执行一个分支3.嵌套判断
public class Test11_嵌套判断 {
public static void main(String[] args) {
/
1.判断一个学生是男生 还是女生 2. 如果男生 ,分数在90以上 可以上清华 3. 如果是 女生 分数 80 以上可以上北大
*/
String sex = “男”;
int score = 85;
// 先判断是男生 还是 女生
if (sex == “男”) {
// 嵌套了一个判断
if (score >= 90) {
System.out.println(“可以上清华!”);} else {<br /> System.out.println("回家种地");<br /> }<br /> } else if (sex == "女") {<br /> // 嵌套了一个判断<br /> if (score >= 80) {<br /> System.out.println("可以上北大");<br /> } else {<br /> System.out.println("上复旦");<br /> }<br /> }
/*<br /> * 有一个 验证码 、账号 、密码 经过判断 给与提示 1. 先判断验证码 2. 判断账户 3. 判断密码<br /> * <br /> * 正确的验证码 :QWER 正确的账号 :jack 正确的密码 :123<br /> */<br /> /*String code = "QWER";<br /> String account = "jack";<br /> String upass = "123";
// 先判断 code<br /> if (code == "QWER") {<br /> // 判断账户<br /> if (account == "jack") {<br /> // 判断<br /> if (upass == "123") {<br /> System.out.println("恭喜您,登录成功,您的用户名是--->" + account);<br /> } else {<br /> // 密码错误<br /> System.out.println("密码错误!");<br /> }<br /> } else {<br /> // 账户不存在<br /> System.out.println("账户不存在!");<br /> }<br /> } else {<br /> // 验证码错误<br /> System.out.println("验证码错误!");<br /> }*/<br /> <br /> Scanner sc = new Scanner(System.in);<br /> System.out.println("请输入验证码:");<br /> String code = sc.next();<br /> System.out.println("请输入账号:");<br /> String account = sc.next();<br /> System.out.println("请输入密码:");<br /> String upass = sc.next();<br /> <br /> if("QWER".equals(code)){<br /> if("jack".equals(account)){<br /> if("123".equals(upass)){<br /> System.out.println("恭喜您,登录成功!");<br /> }else {<br /> System.out.println("密码错误!");<br /> }<br /> }else {<br /> System.out.println("账户不存在!");<br /> }<br /> }else {<br /> System.out.println("验证错误!");<br /> }<br /> <br /> }<br />}
4、Switch case
对if else 一种简化模式
//录入一个成绩 score = 87 ; 输出此成绩所处的档次
//【100 — 90】优秀 【80—90) 良好 【70—-80) 中等 【60—70) 及格 小于60 不及格
//语法
switch(变量){
case num1:
code ;
case num2:
code ;
case num3:
code ;
//….
default :
code
}
// switch中的表达式 可以使用 byte 、short 、char、int、String、枚举
public class Test12_Switch {
public static void main(String[] args) {
//从客户端 传入一个数字 【1—4】 根据 1 2 3 4 判断是 第几季度
String ji = “3” ;
switch (ji) {
case “1”:
System.out.println(“春季”);
break;
case “2”:
System.out.println(“夏季”);
break;
case “3”:
System.out.println(“秋季”);
break;
case “4”:
System.out.println(“冬季”);
break;
default:
System.out.println(“输入错误”);
break;
}
//上述情况 产生 一个 case穿透问题 解决方案 在每一个条件分支 加一个 break
//录入一个成绩 score = 87 ; 输出此成绩所处的档次
//【100 — 90】优秀 【80—90) 良好 【70—-80) 中等 【60—70) 及格 小于60 不及格
int score = 33;
switch (score / 10) {
case 10:
System.out.println(“优秀”);
break;
case 9:
System.out.println(“优秀”);
break;
case 8:
System.out.println(“良好”);
break;
case 7:
System.out.println(“中等”);
break;
case 6:
System.out.println(“几个”);
break;
default:
System.out.println(“不及格!”);
break;
}
}
}三、Scanner使用
Scanner类是Java API提供的一个工具类 ,作用可以从控制台输入数据,被Java读取
public class Test13_Scanner {
public static void main(String[] args) {
//使用Scanner 必须先创建 Scanner对象 传入一个输入流
Scanner sc = new Scanner(System.in);
//下面就可以使用 Scanner提供的功能 (方法)
/ 1. next() 读取控制台输入的数据 并且 以 tab、space 键 为结束
当你按下 tab 或者 space 键的时候 输入就结束了
是一个阻塞方法 ,不输入信息 程序就不会向下执行
/
/System.out.println(“请输入信息:”);
String info = sc.next();
System.out.println(info);/
/
2.nextLine() 以回车键为结束
/
/System.out.println(“请输入姓名:”);
String names = sc.nextLine();
System.out.println(names);
System.out.println(“请输入性别:”);
String sex = sc.next();
System.out.println(sex);/
/
3.nextInt() 、nextDouble() …
只接收 数据 接收 \n
*/
System.out.println(“请输入年龄:”);
int age = sc.nextInt();
System.out.println(age);
sc.nextLine(); // 接收nextInt() 没有接收回车
//在输入年龄的时候 按下回车 nextInt() 只接收数据 没有接收 回车的操作
System.out.println(“请输入性别:”);
String sex = sc.nextLine();
System.out.println(sex);
}
}
/
3.nextInt() 、nextDouble() …
只接收 数据 接收 \n
/
System.out.println(“请输入年龄:”);
int age = sc.nextInt();
System.out.println(age);
sc.nextLine(); // 接收nextInt() 没有接收回车
//在输入年龄的时候 按下回车 nextInt() 只接收数据 没有接收 回车的操作
System.out.println(“请输入性别:”);
String sex = sc.nextLine();
System.out.println(sex);
}
}