• 【Java基础】Java全栈体系(一)


    Java 基础

    第一章 计算机概述

    一、C 语言的编译运行过程

    C语言的编译运行过程:-------效率高、与操作系统相关
       .c源文件,经过编译,直接生成可执行文件(0和1)
    
    QQ是用C语言写的:
      Windows版的QQ-----------------运行在Windows系统上
      Linux版的QQ-------------------运行在Linux系统上
      IOS版的QQ---------------------运行在IOS系统上
      ???版的QQ---------------------运行在???系统上
    
    不同操作系统的指令是不同的:
    Windows系统:
      你----------------01010101
    Linux系统:
      你----------------11110011
    IOS系统:
      你----------------00111100
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    二、Java 的编译运行过程

    java编译运行过程:------------------------------效率稍低、
      1).java源文件,经过编译,生成.class字节码文件
      2)JVM加载.class并运行.class(0和1)
          
    假设QQ是用Java语言写的:
       java版的QQ,经过编译,生成.class字节码文件
         1)Windows装JVM-----------运行在Windows系统上
         2)Linux装JVM-------------运行在Linux系统上
         3)IOS装JVM---------------运行在IOS系统上
         4)???装JVM---------------运行在???系统上
          
    跨平台、一次编程到处使用      
          
    银行系统------用Java语言写的(上亿的资金)
           
         银行服务器----------------Windows系统
         银行服务器----------------Linux系统
         银行服务器----------------IOS系统     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    三、Java 开发环境

    1. Java编译运行过程

    • 编译期:.java源文件,经过编译,生成.class字节码文件
    • 运行期:JVM加载.class并运行.class(0和1)
    • 特点: 跨平台、一次编程到处使用

    2. 名词解释

    • JVM: java虚拟机
      • 加载.class并运行.class
    • JRE: java运行环境
      • 除了包含JVM以外,还包含了运行java程序所必须的环境
      • JRE = JVM+java系统类库(小零件)
    • JDK: java开发工具包
      • 除了包含JRE以外,还包含了开发java程序所必须的命令工具
      • JDK=JRE+编译、运行等命令工具
    • 结论:
      • 运行java程序的最小环境为JRE
      • 开发java程序的最小环境为JDK

    四、IDEA:

    1. 是JetBrains公司的,分社区版(免费的)和终级版(收费的)

    2. 开发步骤:

      2.1) 新建Java项目/ 工程---------------------------小区

      2.2) 新建Java包--------------------------------------楼+单元

      2.3) 新建Java类--------------------------------------房子

    • main中: System.out.println(“hello world”);
    1. 注释: 解释性文本(计算机不执行)

      3.1) 单行注释: //

      3.2) 多行注释: /* */

      3.3) 文档注释: /** */

    package D01;    // 声明包D01(楼+单元)
    
    public class HelloWorld {   // 声明类HelloWorld(房子)
        // 主方法,为程序的入口(大门口),程序的执行从main开始,main结束则程序结束
        public static void main(String[] args) {
            // 输出Hello world
            // 1.严格区分大小写
            // 2.所有符号必须是英文模式的
            // 3.每句话必须以分号结尾
            System.out.println("Hello world");  // 双引号中的原样输出
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    五、变量(存数的)

    1. 声明:----------- 相当于在银行开帐户

    int a; //声明一个整型的变量,名为a
    int b,c,d; //声明三个整型的变量,名为b,c,d
    //int a; //编译错误,变量不能同名
    
    • 1
    • 2
    • 3

    2. 初始化:--------- 相当于给帐户存钱

    int a = 250; //声明整型变量a并赋值为250
    int b;   //声明整型变量b
    b = 250; //给变量b赋值为250
    b = 360; //修改b的值为360
    
    • 1
    • 2
    • 3
    • 4

    3. 使用:----------- 使用的是帐户里面的钱

    1)对变量的使用就是对它所存的那个数的使用
        int a = 5;
        int b = a+10; //取出a的值5,加10后,再赋值给变量b
        System.out.println(b);   //输出变量b的值15
        System.out.println("b"); //输出b,双引号中的原样输出
        a = a+10; //在a本身基础之上增10
        System.out.println(a); //15
    2)变量在用之前必须声明并初始化
        //System.out.println(m); //编译错误,变量m未声明
        int m;
        //System.out.println(m); //编译错误,变量m未初始化
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 命名:
    1)只能包含字母、数字、_和$符,不能以数字开头
    2)严格区分大小写
    3)不能使用关键字
    4)允许中文命名,但不建议,建议"英文的见名知意"
    • 1
    • 2
    • 3
    • 4
    package D02;
    
    // 变量的演示
    public class VarDemo {
        public static void main(String[] args) {
            // 1. 变量的声明;----在银行开账户
            int a;  // 声明一个整型的变量,名为a
            int b,c,d;  // 声明三个整型的变量,名为b,c,d
            // int a;   // 编译错误,变量不能同名
    
            // 2. 变量的初始化:----给账户存钱
            int e = 25; // 声明整型变量e并赋值为25
            int f;  // 声明整型变量f
            f = 25; // 给变量f赋值为25
            f = 50; // 修改f的值为50
    
            // 3. 变量的使用:----使用的是账户里面的钱
            int g = 5;
            int h = g + 10; // 取出g的值,加10后,再赋值给变量h
            System.out.println(h);      // 输出变量h的值15
            System.out.println("h");    // 输出h,双引号中的原样输出
            g = g + 10; // 在g本身基础之上增10
            System.out.println(g);  // 15
            // System.out.println(i);  // 编译错误,变量i未声明
            int i;
            // System.out.println(i);  // 编译错误,变量i未初始化
    
            // 4. 变量的命名
            int a1, a_5$, _3c, $5g;
            // int a*b;    // 编译错误,不能包含*号等特殊符号
            // int 1a; // 编译错误,不能以数字开头
            int aa = 5;
            // System.out.println(aA); // 编译错误,严格区分大小写
            // int class;  // 编译错误,不能使用关键字
    
            // int 年龄; // 允许,但不建议
            // int nianLing;    // 既不直观也不专业 ---- 必须杜绝
            int age;    // 建议“英文的见名知意”
            int score, myScore, myJavaScore;    // 驼峰命名法(变量)
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41

    六、八种基本数据类型

    • byte, short, int, long, float, double, boolean, char

    1. int:整型,4个字节,-21个多亿到21个多亿

    • 整数直接量默认为int类型,但不能超出范围,若超范围则发生编译错误
    • 两个整数相除,结果还是整数,小数位无条件舍弃(不会四舍五入)
    • 运算时若超出范围,则发生溢出(溢出不是错误,但是需要避免)

    2. long:长整型,8个字节,很大很大很大

    • 表示长整型直接量,需要数字后加L或l
    • 运算时若有可能溢出,建议在第1个数字后加L

    3. double:浮点型,8个字节,很大很大很大

    • 浮点数直接量默认为double型,若想表示float需在数字后加F或f
    • double与float型数据参与运算时,有可能发生舍入误差(精确运算场合不能选用)

    4. boolean: 布尔型,1个字节

    • 只能存储true或false

    5. char:字符型,2个字节

    • 采用的是Unicode字符集编码格式,一个字符对应一个码
      表现的形式为字符char,但本质上是码int(0到65535之间)
      (ASCII码: ‘a’–97 ‘A’–65 ‘0’–48)
    • 字符型直接量必须放在单引号中,只能有一个
    • 特殊符号需要通过\来转义

    七、类型间的转换

    1. 两种方式

    数据类型从小到大依次为: byte--short--int--long--float--double
                                char--
    
    • 1
    • 2
    • 自动/隐式类型转换:小类型到大类型
    • 强制类型转换:大类型到小类型
      • 语法: (要转换成为的数据类型)变量
      • 强转有可能发生溢出或丢失精度

    2. 两点规则

    • 整数直接量可以直接赋值给byte、short、char,但不能超范围
    • byte,short,char型数据参与运算时,系统将其一律先转为int再运算
    package D02;
    
    public class DataTypeDemo {
        public static void main(String[] args) {
            /**
            // 类型间的转换
            byte b1 = 5;    // 整数直接量可以直接赋值
            byte b2 = 6;
            byte b3 = (byte)(b1 + b2);
    
            System.out.println(2 + 2);    // 4
            System.out.println(2 + '2');    // 52, 2加上'2'的码50
            System.out.println('2' + '2');  // 100,'2'的码50,加上'2'的码50
            
            // 类型间的转换
            int a = 5;
            long b = a;     // 自动/隐式类型转换
            int c = (int)b; // 强制类型转换
    
            long d = 5;     // 自动类型转换
            double e = 5;   // 自动类型转换
    
            long f = 10000000000L;
            int g = (int)f;
            System.out.println(g);  // 1410065408,有可能发生溢出
    
            double h = 25.987;
            int i = (int)h;
            System.out.println(i);  // 25,有可能丢失精度
    
    
            // 5. char:字符型,2个字节
            char c1 = '女';  // 字符女
            char c2 = 'f';  // 字符f
            char c3 = '6';  // 字符6
            char c4 = ' ';  // 空格符
    
            // char c5 = 女;    // 编译错误,字符直接量必须放在单引号中
            // char c6 = '';   // 编译错误,必须有字符
            // char c7 = '女性'; // 编译错误,只能有一个字符
    
            char c8 = '\'';
            System.out.println(c8); // '
    
            char c9 = 65;   // 0到65535之间
            System.out.println(c9); // 输出时会依据c8的类型来做输出
                                    // c8为char型,则以字符的形式来输出
                                    // c8为int型,则以数学的形式来输出
    
            // 4.boolean:布尔型,1个字节
            boolean b1 = true;  // true为布尔型直接量
            boolean b2 = false; // false为布尔型直接量
            // boolean b3 = 25;    // 编译错误,布尔型只能赋值为true或false
    
            // 3.double:浮点型,8个字节,很大很大很大
            double a = 3.14;    // 3.14为浮点数直接量,默认为double型
            float b = 3.14F;    // 3.14F为float直接量
    
            double c = 6.0, d = 4.9;
            System.out.println(c - d);  // 1.0999999999999996
                                        // 1.1
    
    
    
            // 2.long:长整型,8个字节,很大很大很大
            // long a = 10000000000;   // 编译错误,100亿默认为int型,但超出int范围了
            long b = 10000000000L;  // 100亿L为长整型直接量
    
    
            long c = 1000000000 * 2 * 10L;
            System.out.println(c);  // 200亿(long)
    
            // 溢出了
            long d = 1000000000 * 3 * 10L;
            System.out.println(d);  // 不是300亿
    
            long e = 1000000000L * 3 * 10;
            System.out.println(e);  // 300亿
    
            // 1.int:整型,4个字节,-21个多亿到21个多亿
            int a = 25; // 25为整数直接量,默认为int型
            // int b = 10000000000;    // 编译错误,100亿默认为int型,但超出int范围了
            System.out.println(5/2);    // 2
            System.out.println(2/5);    // 0
            System.out.println(5.0/2);  // 2.5
    
            int c = 2147483647; // int的最大值
            c = c + 1;
            System.out.println(c);  // -2147483648 发生溢出了,溢出需要避免
            /**
             * +1 ----> -2147483648
             * +2 ----> -2147483647
             * +3 ----> -2147483646
             */
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
  • 相关阅读:
    SSM - Springboot - MyBatis-Plus 全栈体系(三十)
    双非读者,一举拿下阿里、字节、美团、京东、虾皮offer
    Android studio Gradle download:kotlin-compiler-embeddable-1.7.20
    go 并发编程之-工作池
    LangChain结合DSPy,高效实现提示工程自动优化
    55_Pandas.DataFrame 转换为 JSON 字符串/文件并保存 (to_json)
    双指针--反转字符串,数组拆分,两数之和,移除元素,最大连续1的个数,长度最小子数组
    Flink学习第十天——玩转Flink Core Api常用Transformation算子 多案例实战
    软考重点5 程序设计语言
    C++常用运算符
  • 原文地址:https://blog.csdn.net/sgsgkxkx/article/details/125319530