0.回顾

  1. 标识符java语言中的一个符号,定义 包名、类名、方法名、变量名、参数名规范 :开发时的规范 :
    • 必须以字母、数字、_、$ 组成
    • 不能以数字开始
    • 不能使用关键字
    • 类名 大驼峰标识
    • 包名 都是小写
    • 方法名、变量名、参数名 遵守小驼峰标识
  2. 关键字 Java中征用的标识符 50个goto和const Java中的保留字
  3. 数据类型
    • 基本类型三类八种 整数 :byte、short、int、long 默认类型 int 浮点数 :float 、double 默认类型 double 布尔型 :true 和 false
    • 引用类型处理基本类型 都是应用类型
    • 数据类型的转换
      • 自动类型转换 隐式转换 一般是在运算中 ,进行自动转换 char、byte、short —->int —>long —>float—->double
      • 强转在数值之前 加上 小括弧 进行强转 例如 : int i = 100;
        byte b = (byte)i; //风险
  4. 变量在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 ;
      //以上变量称之为 成员变量


      }
    • 局部变量 局部变量 ,除了成员变量之外 都是局部变量 包括 :
      • 方法内部
      • 代码块
      • 方法参数

成员变量和局部变量的区别 :使用范围不同 ,也就是说 定义的变量是有使用范围 也叫 变量的作用域
变量的作用域是 :变量定义哪个华括弧中 ,那就可以在这个花括弧中使用
成员变量 :
如果定义成员变量 不给变量赋值 ,虚拟机会给你默认值:
整数 :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) (d1
10 + 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. 顺序执行
  2. 条件判断
  3. 循环迭代

    1. 单条件判断

    day05 - 图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(“可以上清华!”);

    1. } 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 /> }
    2. /*<br /> * 有一个 验证码 、账号 、密码 经过判断 给与提示 1. 先判断验证码 2. 判断账户 3. 判断密码<br /> * <br /> * 正确的验证码 :QWER 正确的账号 :jack 正确的密码 :123<br /> */<br /> /*String code = "QWER";<br /> String account = "jack";<br /> String upass = "123";
    3. // 先判断 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.回顾

  4. 标识符java语言中的一个符号,定义 包名、类名、方法名、变量名、参数名规范 :开发时的规范 :

    • 必须以字母、数字、_、$ 组成
    • 不能以数字开始
    • 不能使用关键字
    • 类名 大驼峰标识
    • 包名 都是小写
    • 方法名、变量名、参数名 遵守小驼峰标识
  5. 关键字 Java中征用的标识符 50个goto和const Java中的保留字
  6. 数据类型
    • 基本类型三类八种 整数 :byte、short、int、long 默认类型 int 浮点数 :float 、double 默认类型 double 布尔型 :true 和 false
    • 引用类型处理基本类型 都是应用类型
    • 数据类型的转换
      • 自动类型转换 隐式转换 一般是在运算中 ,进行自动转换 char、byte、short —->int —>long —>float—->double
      • 强转在数值之前 加上 小括弧 进行强转 例如 : int i = 100;
        byte b = (byte)i; //风险
  7. 变量在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 ;
      //以上变量称之为 成员变量


      }
    • 局部变量 局部变量 ,除了成员变量之外 都是局部变量 包括 :
      • 方法内部
      • 代码块
      • 方法参数

成员变量和局部变量的区别 :使用范围不同 ,也就是说 定义的变量是有使用范围 也叫 变量的作用域
变量的作用域是 :变量定义哪个华括弧中 ,那就可以在这个花括弧中使用
成员变量 :
如果定义成员变量 不给变量赋值 ,虚拟机会给你默认值:
整数 :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) (d1
10 + 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. 顺序执行
  2. 条件判断
  3. 循环迭代

    1. 单条件判断

    day05 - 图2
    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(“可以上清华!”);

    1. } 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 /> }
    2. /*<br /> * 有一个 验证码 、账号 、密码 经过判断 给与提示 1. 先判断验证码 2. 判断账户 3. 判断密码<br /> * <br /> * 正确的验证码 :QWER 正确的账号 :jack 正确的密码 :123<br /> */<br /> /*String code = "QWER";<br /> String account = "jack";<br /> String upass = "123";
    3. // 先判断 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);
    }
    }