Java基础01-开发环境&数据类型

Java开发环境

  • JVM(Java Virtual Machine)

    • 在需要运行Java应用程序的操作系统上,安装一个与操作系统对应的JVM
  • JRE(Java Runtime Environment)

    • 是Java程序运行时的环境,包含JVM和运行时需要的核心类库
  • JDK(Java Development Kit)

    • Java程序开发工具包,包含JRE和开发人员使用的编译器工具
    • 开发工具:编译工具(javac.exe)和运行工具(java.exe)
    • 想要开发一个全新的Java程序,必须安装使用JDK
  • 关系图:
    在这里插入图片描述

Java运行的内存分配

各部分名称 作用
(Stack) 存储方法中的局部变量(方法的参数或方法体内部的变量);方法的运行过程一定在栈中;一旦超出作用域,立刻从栈内存中消失
(Heap) 凡是new关键字创建的新对象,都存在于堆中;堆内存中每个对象都有一个地址值(16进制);堆内存中的数据,都有默认值(如整数默认值为0等)
方法区(Method Area) 存储.class相关的数据,包含方法的信息;
本地方法栈(Native Method Stack) 与操作系统相关;
寄存器(pc Register) 与CPU相关;

Hello,World!

package 基础;

// 单行注释
/*多行注释
* public class 均为关键字,其后为定义的类名,其必须保持与该文件名完全一致。
* 类是Java当中所有源代码的基本组织单位。
* public static void 为固定写法,意为程序入口main方法。
* System.out.println 表示打印到控制台。
* */
public class Demo01_HelloWorld {  // 单行注释
    public static void main(String[] args) {
        System.out.println("Hello,world!");
    }
}

标识符

package 基础;

public class Demo02_标识符 {
    /*标识符的命名规则
    * 1. 可以使用英文字母(区分大小写),0-9数字,$(美元符号),_(下划线)
    * 2. 不能以数字开头
    * 3. 标识符不能是关键字
    *
    * 命名规范
    * 1. 类名: 大驼峰 (HelloWorldClass)
    * 2. 变量名: 小驼峰 (helloWorld)
    * 3. 方法名: 同变量名
    * */
}

常量

package 基础;

public class Demo03_常量 {
    /*常量的分类
    * 1. 字符串常量:双引号引用的部分,如:"abc", "字符串"
    * 2. 整数常量: 没有引号的整数,如: 100,200, -250
    * 3. 浮点数常量: 没有引号的小数, 如: 2.5, 3.14, 2.56
    * 4. 字符常量: 单引号引用的单个字符,如:'A', 'b', '字'
    * 5. 布尔常量: 仅两种: true false
    * 6. 空常量: 表示没有任何数据: null
    * */

    public static void main(String[] args) {
        // 字符串常量:
        System.out.println("abc");
        System.out.println("");

        // 整数常量:
        System.out.println(30);
        System.out.println(-5);

        // 浮点数常量:
        System.out.println(3.15);
        System.out.println(-2.5);

        // 字符常量:
        System.out.println('A');
//        System.out.println(''); 报错,有且必须有一个字符。
//        System.out.println('AC'); 报错

        // 布尔常量:
        System.out.println(true);
        System.out.println(false);

        // 空常量:
//        System.out.println(null);  报错,空常量不能直接打印输出。
    }
}

数据类型

package 基础;

public class Demo04_数据类型 {
    /*数据类型分类: 基本数据类型、引用数据类型
    * 基本数据类型:
    * 1.整数型:byte short int(默认) long
    * 占用字节数  1     2     4        8
    * 2.浮点型: float double(默认)
    *           4     8
    * 3.字符型: char
    *           2
    * 4.布尔型: boolean
    *           1
    *
    *
    * 引用数据类型:
    * 1.字符串
    * 2.数组
    * 3.类
    * 4.接口
    * 5.Lambda
    * ......
    *
    *
    * 注意:
    * 1. 字符串是引用数据类型。
    * 2. 浮点型可能只是一个近似值,并非精确的值。
    * 3. 数据范围和所占字节数不一定相关:float(4字节)数据范围比long(8字节)范围更大,
    * 4. 浮点数当中默认的类型是double,如果需要使用float类型,需要加上后缀F。
    *   如果是整数,默认是int,需要使用long类型,需要加上后缀L。
    * */
}

变量

package 基础;

public class Demo05_变量 {
    /*变量:程序运行期间,可以发生改变的量。
     *
     * 创建一个变量的格式:
     * 1.数据类型 变量名称;  // 创建了一个变量
     *   变量名称 = 数据值; // 赋值,将右边的数据值,赋值交给左边的变量
     * 2.数据类型 变量名称 = 数据值; // 创建变量并赋值
     *
     * 使用变量时的注意事项:
     * 1.如果创建多个变量,那么变量之间的名称不可以重复。
     * 2.对于float和long类型来说,字母后缀F和L不要省略。
     * 3.如果使用byte或short类型的变量,右侧的数据值不能超过左侧类型的范围。
     * 4.没有进行赋值的变量,不能直接使用,一定要赋值之后,才能使用。
     * 5.变量使用不能超过作用域的范围。
     * 【作用域】: 从定义变量的开始,直到所属的代码块结束,即大括号结束位置。
     * 6.可以通过一个语句,创建多个变量,但不建议。
     * */
    public static void main(String[] args) {
        int num1;
        num1 = 10;
        System.out.println(num1);

        int num2 = 20;
        System.out.println(num2);

        // 修改num1的值
        num1 = 30;
        System.out.println(num1);

        byte by1 = 30;
        System.out.println(by1);
//        byte by2 = 400;  byte的范围: -128 ~ 127
        // 注意:右侧数值的范围不能超过左侧数据类型的取值范围。

        short sh1 = 50;
        long lo1 = 50;
        float fl1 = 2.5F;
        double do1 = 1.2;
        char ch1 = 'A';
        boolean bool1 = true;

//        int a = 10;
//        int b = 20;
//        int c = 30;

        int a, b, c;
        a = 10;
        b = 20;
        c = 30;

        int x = 100, y = 200, z = 300;


    }
}

数据类型转换

package 基础;

public class Demo06_数据类型转换 {
    /*
    *当数据类型不同时,会发生数据类型转换,分为两种:
    * 自动类型转换:
    * 1. 特点: 代码不需要进行特殊处理,自动完成转换。
    * 2. 规则: 数据范围从小到大。
    *
    * 强制类型转换:
    * 1. 特点: 代码需要进行特殊的格式处理,不能自动完成转换。
    * 2. 格式: 范围小的类型 范围小的变量名 = (范围小的类型)范围大的数据;
    *   如: int num = (int)100L;
    * 注意事项:
    * 1. 强制类型转换不推荐使用,因为可能发生精度损失或数据溢出。
    * 2. byte/short/char 这三种类型都可以发生数学运算,如:+
    * 3. byte/short/char 在发生数学运算时,**都会首先被提升为int类型**,再参与计算。
    * 4. boolean类型不能发生数据类型转换。
    * */
    public static void main(String[] args) {
        System.out.println(1024); // 整数,默认为int
        System.out.println(3.14); // 浮点数,默认double

        long num1 = 100L;
        long num2 = 100;
        System.out.println(num1);  // 100
        System.out.println(num2);  // 100
        //如上,加不加L都会输出100,其中发生了数据类型转换。
        /*
        左边为long类型,右边默认为int类型,等号赋值,将右侧的int常量赋值给了左侧的
        变量long类型进行存储,由于 int --> long 符合了数据范围由小到大的要求,自动类型转换。
         */

        double dou1 = 2.5F;
        System.out.println(dou1);
        // float -->  double 符合由小到大,发生自动类型转换。

        float fl1 = 3L;
        //  long --> float  符合由小到大,发生自动类型转换。


        // 强制类型转换:
//        int number1 = 100L;
//        直接报错;long --> int  不是由小到大的范围关系,
//        不能发生自动类型转换,需要强制类型转换:
        int number1 = (int)100L;
        System.out.println(number1);


        // long 强制转换为 int类型,发生数据溢出。
        int number2 = (int)6000000000L;
        System.out.println(number2);  // 1705032704

        // double 强制转换为 int,发生数据精度缺失。
        int number3= (int)3.99;
        System.out.println(number3); // 3

        // A字符被当做65进行处理。
        char cha1 = 'A';
        System.out.println(cha1 + 1); // 66
        // 计算机底层会用一个数字(二进制)来代表字符'A',即65
        // 一旦char类型的数据进行了数学运算,则会按一定的规则翻译为数字。


        /*注意事项:
        * 1. 对于byte/short/char三种类型来说,如果右侧赋值的数值没有超过左侧数据类型范围,javac编译器会自动
        * 隐含的进行强制类型转化:(byte),(short),(char)
        * 2. 给变量进行赋值的时候,如果右侧的表达式中全部都是常量,没有任何变量时,
        * 编译器javac会直接将若干个常量进行计算得到结果后,赋值给左侧变量,如下例:
        * short result2 = 5 + 8;  等价于: short results2 = 13;
        * 此过程成为“编译器的常量优化“
        * 但是一旦有变量参与,不在进行常量优化。
        * */

        byte byteNum1 = /*(byte)*/30; // 等价于   byte byteNum1 = (byte)30;
        System.out.println(byteNum1);

        short s1 = 5;
        short s2 = 8;
//        short result1 = s1 + s2; //报错,左侧需要是int数据类型

        short result2 = 5 + 8;
        System.out.println(result2);
    }
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>