JavaSEDay02 总结笔记

01-标识符

  • 介绍 : 本人给, 办法, 变量等等起名字的符号

    • 简略记 : 本人起的名字
  • 标识符的命名规定 :

    • 数字 0~9
    • 字符 a-z A-Z
    • _ $
    • 不能是关键字
    • 不能以数字结尾
    • 严格辨别大小写
  • 标识符命名标准 :
小驼峰命名法: (变量)        如果是一个单词, 所有字母小写 ---> age max    如果是多个单词, 从第二个单词开始首字母大写 --> maxAge  tempMax大驼峰命名法: (类)    如果是一个单词, 首字母大写 ---> Student    如果是多个单词, 每个单词首字母大写 ---> OperatorDemo  ScannerDemo

02-数据类型

  • 根本数据类型
整数:        byte        1个字节        -128~127        short        2个字节        int            4个字节        long        8个字节小数:        float        4个字节        double        8个字节字符:        char        2个字节布尔:        boolean        1个字节
  • 今后定义变量的应用思路
1. 如果定义整数类型变量, 首选int, 发现int装不下了, 换成long (退出L的标识)2. 如果定义小数类型变量, 首选double, 非要定义float类型变量, 须要退出F标识
  • 补充细节 :
所有整数, 默认都是int类型    System.out.println(10);所有小数, 默认都是double类型    System.out.println(12.3);char类型的取值范畴 : 0~65535    问题: 为什么是数值范畴    答复: 每一个字符, 底层都有一份数值的标识模式     字符类型, 取值范畴是数值范畴  - 每一个字符, 底层都有一份数值示意模式  - ASCII :       'a'   ----> 97       'b'   ----> 98       'c'   ----> 99
  • 援用数据类型
String 字符串     String name = "张三";
  • 示例:

    public class DataTypeTest {    /*        需要: 请将本人的个人信息定义出变量, 并展现在控制台                (姓名, 年龄, 性别, 身高, 婚姻状况)                姓名: 字符串: String                年龄: 整数: int                性别: 字符: char                身高: 小数: double                婚姻状况: 布尔: boolean     */    public static void main(String[] args) {        String name = "张三";        int age = 23;        char gender = '男';        double height = 180.1;        boolean flag = false;        System.out.println(name);        System.out.println(age);        System.out.println(gender);        System.out.println(height);        System.out.println(flag);    }

03-键盘录入

  • 成果 : 让程序中应用的数据, 更加灵便
  • 步骤 :
import java.util.Scanner;public class ScannerDemo {    /*        1. 找符咒                    地位: 写在类的下面                    代码: import java.util.Scanner;                    意思: 从代码仓库中, 找到Scanner这个符咒        2. 号召精灵                    地位: 写在main办法中                    代码: Scanner sc = new Scanner(System.in);                    意思: 将符咒中的精灵号召进去, 并给它起名字叫做 sc        3. 指挥精灵干活                    地位: 写在main办法中                    代码: int age = sc.nextInt();                    意思: 指挥 sc 从键盘接管一个整数, 并交给age变量记录                    代码: String name = sc.next();                    意思: 指挥 sc 从键盘接管一个字符串, 并交给name变量记录     */    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        System.out.println("请输入您的年龄:");        int age = sc.nextInt();        System.out.println(age);        System.out.println("请输入您的姓名:");        String name = sc.next();        System.out.println(name);    }}

04-算数运算符

+-*---------------------------------------/ : 整数相除, 后果只能失去整数, 想要失去带有小数的后果, 须要有小数参加运算% : 取模, 失去除法之后剩下的余数

自增自减运算符 :

++ : 让变量本身的值 + 1-- : 让变量本身的值 - 1留神: 只能操作变量, 不能操作常量.---------------------------------------------------------1. 独自应用(举荐)    一句代码当中, 只做 ++ 或者是 --    ++, -- 放在变量的后面和前面, 没有区别的            int a = 10;        a++;        ++a;2. 参加运算应用(面试)    ++在前: 先自增, 再运算                      int a = 10;              int b = ++a;   // a = 11, b = 11            ++在后: 先运算, 再自增              会将该变量本来的值, 提取进去, 做操作, 而后再自增                      int a = 10;              int b = a++;   // b = 10, a = 11
public class OperatorTest2 {    /*        需要: 看程序说后果     */    public static void main(String[] args) {        int x = 10;        int y = x++;        int z = --y;        System.out.println("x=" + x);        System.out.println("y=" + y);        System.out.println("z=" + z);        System.out.println("---------------------");        int a = 3;        int b = (++a) + (a++) + (a * 10);        System.out.println("a=" + a);        System.out.println("b=" + b);    }}

05-字符串拼接操作

  • 当 + 号操作过程中, 遇到了字符串, + 号就是字符串连接符, 而不是算数运算符了
System.out.println("5+5=" + 5 + 5);  // "5+5=55"System.out.println("5+5=" + (5 + 5));  // "5+5=10"
import java.util.Scanner;public class OperatorTest1 {    /*        需要:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台                整数123的个位为:3                整数123的十位为:2                整数123的百位为:1        剖析:              1. 应用Scanner键盘录入一个整数              2. 数值拆分                    个位: 数值 % 10                    十位: 数值 / 10 % 10                    百位: 数值 / 10 / 10 % 10;                    千位: 数值 / 10 / 10 / 10 % 10;                    万位: 数值 / 10 / 10 / 10 / 10 % 10;                    ...                    ------------------------------                    对于最高位(最左侧) : 优化                    123 / 100 ====> 1                    4567 / 1000 ====> 4                    33445 / 10000 ====> 3             3. 将拆分后的后果, 打印在控制台     */    public static void main(String[] args) {        // 1. 应用Scanner键盘录入一个整数        Scanner sc = new Scanner(System.in);        System.out.println("请输出一个三位数:");        int num = sc.nextInt();        // 2. 数值拆分        int ge = num % 10;        int shi = num / 10 % 10;        int bai = num / 10 / 10 % 10;        // int bai = num / 100;        // 3. 将拆分后的后果, 打印在控制台        System.out.println("整数" + num + "的个位为:" + ge);        System.out.println("整数" + num + "的十位为:" + shi);        System.out.println("整数" + num + "的百位为:" + bai);    }}

06-类型转换-隐式转换

  • 介绍 : 将取值范畴小的数据或变量, 给取值范畴大的变量赋值, 能够间接赋值

    • 简略记 : 小的给大的, 能够间接给
    • 数据取值范畴 : byte short int long float double

      • 尽管float占用4个字节, 然而取值范畴要比8个字节的long更大.
int a = 10;double b = a;System.out.println(b);   // 10.0
  • 在运算过程中的隐式转换

    • 取值范畴小的数据, 和取值范畴大的数据, 在一起运算, 小的会将本人先晋升为大的, 而后再算.
    • byte short char 在运算的时候, 会间接晋升为 int 类型

07-类型转换-强制转换

  • 介绍 : 将取值范畴大的变量或数据, 给取值范畴小的变量赋值, 不容许间接赋值, 须要强转

    • 简略记 : 大的给小的, 不容许间接给, 须要强转
int num = (int)12.3;
  • 留神 : 今后尽量减少强转的应用, [有可能]会精度损失
int num = (int)12.3;System.out.println(num);    // 12 产生了精度损失int a = 10;byte b = (byte)a;System.out.println(b);      // 10 没有精度损失
  • 类型转换面试题 :
public class OperatorTest3 {    /*        byte a = 3;        byte b = 4;        byte c = a + b;        问题: 以上代码是否存在问题, 如果有, 请阐明起因, 并改过.        起因: a,b是两个byte类型, 在一起运算的时候, 会间接晋升为int类型                晋升之后, 就是两个int相加了, 相加的后果还是int, 将int类型的后果, 赋值给byte类型变量.                这属于大给小, 须要强转.        解决: byte c = (byte)(a + b);        --------------------------------------------------------------        byte result = 3 + 4;        问题: 以上代码是否存在问题, 如果有, 请阐明起因, 并改过.        纳闷: 3 和 4 是两个整数常量, 所有整数默认是int, 两个int相加的后果, 相加的后果还是int, 将int类型的后果, 赋值给byte类型变量.             这属于大给小, 须要强转.        起因: Java存在常量优化机制, 在编译的时候(javac) 主动将 3和4进行相加                    .class(字节码) : byte b = 7;                    并且会主动进行查看, 查看运算后果, 是否在byte的取值范畴之内     */    public static void main(String[] args) {        byte result = 3 + 4;    }}

08-赋值运算符

1. 根本赋值运算符        = : 将等号右侧的数据, 赋值给左侧的变量                int a = 10;2. 扩大赋值运算符                += : 将符号左右两边数据, 做加法运算, 将后果赋值给左侧的变量        -= : 将符号左右两边数据, 做减法运算, 将后果赋值给左侧的变量        *=        /=        %=        留神: 扩大赋值运算符, 自带强转成果        int a = 10;        double b = 12.3;                a += b;    // a = (int)(10 + 12.3);                System.out.println(a);    // 22                --------------------------------------                int c = 10;        double d = 33.3;                d += c;                    // d = 10 + 33.3;                Sysetm.out.println(d);  // 43.3

09-关系运算符(比拟运算符)

>>=<<===!=论断: 关系运算符, 失去的后果, 只能是boolean类型的true, false        = : 赋值操作        == : 比拟操作

10-逻辑运算符

  • 介绍 :

    • 代码层面 : 是用于连贯boolean类型的表达式或者是值
    • 了解层面 : 能够整合多个判断条件, 为一段整体的逻辑
    if(score >= 90 && score <= 100) {}
  • 分类 :
&(与) : 并且, 遇false则false|(或) : 或者, 遇true则true!(非) : 取反---------------------------------------------^ (异或) : 雷同为false, 不同为true

11-短路逻辑运算符

& : 没有短路成果, 无论符号右边是true, false, 左边都要继续执行&& : 具备短路成果, 符号右边为false, 左边就不执行了.    如果符号右边为true, 左边还要继续执行| : 没有短路成果, 无论符号右边是true, false, 左边都要继续执行|| : 具备短路成果, 符号右边为true, 左边就不执行了.    如果符号右边为false, 左边还要继续执行    今后罕用的逻辑运算符 :    &&  ||   !

12-三元运算符

  • 介绍 : 三目运算符 , 能够依据一个判断条件, 达成二者选其一
  • 需要 : 求两个整数最大值
  • 格局 : 判断条件 ? 值1 : 值2;
  • 执行流程 :

    1. 执行判断条件, 看其返回后果是true, false
    2. true : 值1就是最终后果
    3. false : 值2就是最终后果
int max = a > b ? a : b;

13-运算符优先级

  • 熟练掌握 () 的应用, 优先级最高
  • 常识 : && 的优先级, 大于 ||

14-流程管制语句介绍

  • 介绍 : 通过一些非凡的语句, 来控制程序的执行流程
  • 分类 :

    • 程序构造 : Java程序默认执行流程
    • 分支构造 : if, switch
    • 循环构造 : for, while, do...while

15-分支构造语句-if

if语句的格局1:    if(判断条件){        语句体;    }执行流程:    1. 执行 () 中的判断条件, 看其返回后果是true, false    2. true : 执行 {} 中的语句体    3. false : 不执行 {} 中的语句体注意事项:    1. if语句 () 和 {} 之间不要写分号    2. if语句 {} 中如果只有一条语句, {} 能够省略不写, 然而不倡议    3. if语句 () 中, 无论简略还是简单, 只有是boolean类型的true, false, 就合乎语法规定
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            语句体n+1;需要: 键盘录入一个数值, 示意用户的身份 (1. 会员  2. 非会员  其余: 您的输出有误)

必把握案例 :

import java.util.Scanner;public class OperatorTest5 {    /*        需要:键盘录入考试成绩,依据问题所在的区间,程序打印出不同的处分机制        95 ~ 100 :  自行车一辆        90 ~ 94 :  游乐场玩一次        89 ~ 89 :  变形金刚一个        80分以下 :  挨揍        健壮性判断: 校验数据的合理性     */    public static void main(String[] args) {        // 1. 键盘录入问题        Scanner sc = new Scanner(System.in);        System.out.println("请输入您的问题:");        int score = sc.nextInt();        // 2. 多种判断条件, 应用if...else...if        if (score < 0 || score > 100) {            System.out.println("您的问题输出有误!");        } else if (score >= 95 && score <= 100) {            System.out.println("自行车一辆");        } else if (score >= 90 && score <= 94) {            System.out.println("游乐场玩一次");        } else if (score >= 80 && score <= 89) {            System.out.println("变形金刚一个");        } else {            System.out.println("挨揍");        }    }}
import java.util.Scanner;public class OperatorTest6 {    /*        需要:键盘录入考试成绩,依据问题所在的区间,程序打印出不同的处分机制        95 ~ 100 :  自行车一辆        90 ~ 94 :  游乐场玩一次        89 ~ 89 :  变形金刚一个        80分以下 :  挨揍        健壮性判断: 校验数据的合理性     */    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        System.out.println("请输入您的问题:");        int score = sc.nextInt();        if (score >= 0 && score <= 100) {            // 正当的问题            // 代码要是可能走到这里, 问题相对是0~100之间的, 只须要思考, 该给什么处分即可.            if (score >= 95 && score <= 100) {                System.out.println("自行车一辆");            } else if (score >= 90 && score <= 94) {                System.out.println("游乐场玩一次");            } else if (score >= 80 && score <= 89) {                System.out.println("变形金刚一个");            } else {                System.out.println("挨揍");            }        } else {            System.out.println("请查看您输出的问题, 是否是0~100之间");        }    }}