JavaSE基础第二天笔记

1. 标识符

  • 自己给类, 变量, 方法...起的名字都是标识符

    • 简单记 : 自己起的名就是标识符

  • 标识符的命名规则 (必须遵守)

    • 26个英文字母, 大小写都行

    • 数字 0 ~ 9

    • _ $

    • 数字不能开头

    • 不能是 Java 中的关键字

    • 严格区分大小写

  • 标识符的命名规范 (江湖规矩)

    • 大驼峰命名法 (类) : 如果是一个单词, 首字母大写, 如果是多个单词, 每个单词首字母大写

      • Student

      • GoodStudent

      • IfDemo1

    • 小驼峰命名法 (变量, 方法) : 如果是一个单词, 所有字母小写, 如果是多个单词, 从第二个单词开始首字母大写

      • age

      • maxAge

      • minAge

      • maxValue

  • 要求 : 见名知意 !

2. 数据类型

1. 基本数据类型

  • 整数类型

    • byte 1个字节 -128~127

    • short 2个字节

    • int 4个字节

    • long 8个字节

  • 小数类型

    • float 4个字节

    • double 8个字节

  • 字符类型

    • char 2个字节

  • 布尔类型

    • boolean 1个字节

  • 使用不同的数据类型, 定义变量.

- 今后定义整数类型变量, 首选int, 如果int装不下了, 换成long, 定义long类型变量, 需要加入L的标识(大小写都可以)
​
- 今后定义小数类型变量, 首选double, 非要使用float类型变量, 需要加入 F 的标识 (大小写都可以)
​
int age = 23;
double height = 180.1';
char gender = '男';
boolean flag = false;
----------------------------
String name = "张三";

  • 细节

    • 所有整数默认都是 int 类型

      • System.out.println(100); // int

    • 所有小数默认都是 double 类型

      • System.out.println(10.0); // double

2. 引用数据类型

TODO : day04 学习数组的时候开始介绍

3. Scanner键盘录入

1. 找符咒 (导包)
    import java.util.Scanner;
    - 必须写在class的上面
    
2. 召唤精灵 (创建对象)
    Scanner sc = new Scanner(System.in);
    
3. 指挥精灵干活 
    int age = sc.nextInt();
    String name = sc.next();

4. 运算符

4.1 算数运算符

+
-
*
--------------------------------------
/ : 整数相除, 结果只能得到整数, 如果想要得到小数, 需要有小数参与运算
% : 除法结束之后, 得到的余数.

4.2 字符串拼接操作

- 当 + 号操作过程中, 出现了字符串, 这时候就是字符串连接符了, 而不是算数运算符了.
​
System.out.println("年龄为:" + 23);    // "年龄为:23"
System.out.println("年龄为:" + 23 + 1);// "年龄为231"
System.out.println("年龄为:" + (23 + 1)); // "年龄为24"

4.3 自增自减运算符

++ : 让变量自身的值 + 1
-- : 让变量自身的值 - 1
    
使用: 可以放在变量的前面, 也可以放在后面.
a++;
++a;
​
问题: 在前在后有什么区别?
    
- 单独使用: 在前在后没有区别
        
    a++;
    ++a;
        
- 参与运算使用: 
    
    ++在前: 先自增, 再赋值
        
                int a = 10;
                int b = ++a;
                sout(a);   // 11
                sout(b);   // 11
        
    ++在后: 先操作, 再自增
                
                int a = 10;
                int b = a++;
                sout(a);   // 11
                sout(b);   // 10
​
​
- 注意事项: 自增自减运算符, 只能操作变量, 不能操作常量.

4.4 赋值运算符

基本赋值运算符:
        = : 将符号右边的数据, 赋值给左侧的变量.
        int age = 23;
​
扩展赋值运算符:
        += -= *= /= %=
            
        += : 将符号左右两边的数据做加法运算, 再将结果赋值给左边的变量.
            
            int a = 10;
            a += 20;
            sout(a);     // 30
​
注意事项:
        
        扩展赋值运算符, 底层自带强转效果.

4.5 关系运算符(比较运算符)

> >= < <= == !=
​
结论: 无论比较运算符简单还是复杂, 结果都只能是boolean类型的true, false.

4.6 逻辑运算符

  • 作用 : 可以整合多个条件, 为一段整体的逻辑条件

    • if (score >= 95 && score <= 100) {}

分类:
​
&(与) : 并且, 遇false则false
|(或) : 或者, 遇true则true
!(非) : 取反
^(异或) : 相同为false, 不同为true
​
-----------------------------------------
​
​
&&(短路与) : 
        
        & 没有短路效果, 无论符号左边是true还是false, 右边都要继续执行
        && 具有短路效果, 当符号左边为false, 右边就不执行了
                        如果符号左边为true, 右边继续执行.
​
||(短路或) 
        
        | 没有短路效果, 无论符号左边是true还是false, 右边都要继续执行
        || 具有短路效果, 当符号左边为true, 右边就不执行了
                        如果符号左边为false, 右边继续执行.

  • 今后最常用的逻辑运算符

    • &&

    • ||

    • !

4.7 三元运算符

  • 根据一个判断条件, 从给出的两个数据中, 二者选其一.

  • 格式

    判断条件 ? 值1 : 值2;
  • 需求 : 求两个整数的最大值

    int a = 10;
    int b = 20;
    ​
    int max = a > b ? a : b;

4.8 运算符优先级

  • () 的优先级, 高于所有运算符.

5. 类型转换

5.1 隐式转换

  • 基本的隐式转换

    • 小的给大的赋值, 可以直接赋值

      • 小和大针对的是数据的取值范围

      • byte -> short - > int -> long -> float -> double

      • 注意 : float虽然占用4个字节, 但是取值范围比8个字节的long更大.

  • 运算过程中的隐式转换

    • 当取值范围小的数据, 和取值范围大的数据, 在一起运算, 小的会先提升为的大的然后再进行运算

    • byte short char 在运算的时候, 都会直接提升为 int 类型

5.2 强制转换

  • 将取值范围大的数据, 给取值范围小的变量赋值, 不能直接赋值, 需要强转

double a = 12.3;
int b = (int)a;
sout(b);  // 12
​
今后尽量减少数据的强转使用, 避免不必要的精度损失问题

5.3 面试题

byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
​
原因: b1 和 b2 相加, 两个byte运算, 都会先提升为int类型
        两个int相加, 结果还是int, int类型结果给byte类型变量赋值, 需要强转.
    
解决: byte b3 = (byte)(b1 + b2);
byte b = 3 + 4;
​
解释: 3和4是两个常量, 在javac编译的时候, 就会自动运算出一个7的结果.
            .class字节码文件中 : byte b = 7;
​
     自动判断数据, 是否在byte的取值范围内
                不在: 编译出错
                在 : 编译通过

6. if 语句

  • Java 程序默认的执行流程 -> 顺序结构 -> 代码从上到下, 从左到右依次执行.

if语句的格式1 :
​
    if(判断条件){
        语句体;
    }
​
 执行流程:
    1. 执行判断条件, 看其返回结果是true, 还是false
    2. true : 执行 {} 当中的语句体
    3. false : 不执行 {} 当中的语句体.
​
 注意事项:
    1. if语句 () 和 {} 之间不要写分号
    2. if语句 {} 当中, 如果语句体是一条语句, {} 可以省略不写, 但是不建议!

if语句的格式2 :
​
    if(判断条件){
        语句体1;
    }else{
        语句体2;
    }
​
 执行流程:
    1. 执行判断条件, 看其返回结果是true, 还是false
    2. true : 执行语句体1
    3. false : 执行语句体2

if语句的格式3 :
​
    if(判断条件1){
        语句体1;
    }else if(判断条件2){
        语句体2;
    }else if(判断条件3){
        语句体3;
    }
    ...
    else{
        语句体n+1;
    }
​
 执行流程:
    1. 执行判断条件1, 看其返回结果是true, 还是false.
            true : 执行语句体1, 执行完毕, 结束整个if语句.
            false : 进入第二步
    2. 执行判断条件2, 看其返回结果是true, 还是false.
            true : 执行语句体2, 执行完毕, 结束整个if语句.
            false : ...
    3. 如果给出的所有条件, 都不成立, 将会执行最后的 else
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值