2_java基础

Java的内存需要划分成为5个部分:

  1. 栈(Stack): 存放的都是方法中的局部变量。方法的运行一定要在栈当中运行

    局部变量: 方法的参数, 或者是方法 {} 内部的变量

    作用域: 一旦超出作用域,立刻从栈内存当中消失

  2. 堆(Heap): 凡是new出来的东西,都在堆当中

    堆内存里面的东西都有一个地址值: 16进制

    堆内存里面的数据,都有默认值, 规则:

    ​ 如果是整数 默认为 0

    ​ 如果是浮点数 默认为 0.0

    ​ 如果是字符 默认为 '\u0000'

    ​ 如果是布尔 默认为 false

    ​ 如果是引用类型 默认为null

  3. 方法区(Method Area) : 存储.class相关信息,包含方法的信息

  4. 本地方法栈(Native Method Stack): 与操作系统相关。

  5. 寄存器 (Pc Register): 与CPU相关

1. 关键字

特点: 完全小写的字母 (在编译器中,一般有颜色 ( 但是有颜色不一定就是关键字))

2. 标识符

  • 标识符: 是指在程序中,我们自己定义的内容。比如类的名字、方法的名字和变量的名字等,都是标识符
  • 命令规则: 硬性要求
    • 标识符可以包含 英文字母26个(区分大小写)、0-9数字、$、和 _ (下划线)
    • 标识符不能以数字开头
    • 标识符不能是关键字
  • 命名规范: 软件建议
    • 类名规范: 首字母大写,后面每个单词首字母大写 (大驼峰式)
    • 变量名规范:首字母小写, 后面每个单词首字母大写 (小驼峰式)
    • 方法名规范: 与变量名规范一样

3. 注释

  • // 单选注释
  • /**/ 多行注释

4. 常量

常量: 在程序运行期间,固定不变的量

常量的分类:

  1. 字符串常量: 凡是用双引号引起来的部分,都是字符串常量. 如: "abc" / "123"
  2. 整数常量: 直接写上的数字, 没有小数点。 如: 100 200 0 -20
  3. 浮点数常量: 直接写上的小数, 有小数点, 例如: 2.5 / -3.14 / -0.0
  4. 字符串常量: 凡是用单引号引起来的单个字符, 就叫做字符常量。 例如: 'A', 'b', '岩'
  5. 布尔常量: 只有两种取值: true(真), false(假)
  6. 空常量: null , 代表没有任何数据 (不能直接用来打印输出)

5. 基本数据类型

数据类型 关键字 内存占用 取值范围
字节型 byte 1个字节 -127-127
短整型 short 2个字节 -32768-32767
整型 int (默认) 4个字节 -2^31 ~ 2^31-1
长整型 long 8个字节 -2^63 ~ 2^63-1
单数度浮点数 float 4个字节 1.4013E-45 ~ 3.4028E+38
双精度浮点数 double (默认) 8个字节 4.9E-324 ~ 1.7977E+308
字符型 char 2个字节 0-65535
布尔类型 boolean 1个字节 true, false

6. 三元运算

格式: 条件 ?表达式A : 表达式B

1. 方法的定义

/*
方法其实就是若干语句的功能的集合
定义方法的完整格式:
修饰符 返回值类型 方法名称(参数类型 参数名称 ....) {
    方法体
    return 返回值;    // 如果 返回值类型为void ,则 return 可以不用写,或者直接return就行,不要再写其他的了
}  */
public class DefindMethod {
    public static void main(String[] args) {
        int res = sum(5, 10);
        System.out.println(res);

        methodC(5, 20);

    }

    // 求两个数的和
    public static int sum(int a, int b) {
        int result = a + b;

        return result;
    }
}

重载方法

/*
方法的重载(OverLoad): 多个方法的名称一样,但是参数列表不一样
好处: 只需要记住唯一一个方法名称, 就可以实现类似的多个功能
 */
public class OverLoadMethod {
    public static void main(String[] args) {
        Sum(10, 20, 30);
        Sum(10, 20, 30, 40);
    }

    public static void Sum(int a, int b) {
        int res = a + b;
    }

    public static void Sum(int a, int b, int c) {
        int res = a + b + c;
    }
}

2. 数组

数组的概念: 是一种容器,可以同时存放多个数据值
访问数组: 数组名称[索引]  // 从0开始

数组的特点:
1. 数组是一种引用数据类型
2. 数组当中的多个数据,类型必须统一
3. 数组的长度在程序运行期间不可改变

数组的初始化: 在内存当中创建一个数组,并且向其中赋予一些默认值

两种常见的初始化方式:
1. 动态初始化 (指定长度)    
2. 静态初始化 (指定内容)    ps: 没有直接指定长度,但是依然会自动推算得出长度

动态初始化数组的格式:
数据类型[] 数组名称 = new 数据类型[数组长度]

静态初始化数组的格式:
数据类型[] 数组名称 = new 数据类型[] {元素1, 元素2, ...};
public class Demo01Array {
    public static void main(String[] args) {
        /*
        动态初始化数组
        */
        // 创建一个数组, 能存放300个int类型的数据
        int[] arrayA = new int[300];
        // 创建一个数组, 能存放5个字符串
        String[] arrayS = new String[5];
        
        /*静态初始化数组*/
        // 直接创建一个数组,里面装的全部都是int 类型的数据, 具体为: 1, 5, 20, 30
        int[] arrayI = new int[] { 1, 5, 20, 30 };
        // 使用省略格式,创建一个装有: "hello" "world" "java" 的数组
        String[] arrayS2 = { "hello", "world", "java" };
        System.out.println(arrayS2);   // 直接打印数组名称, 得到的是数组对应的 内存地址的哈希值   // [Ljava.lang.String;@1b6d3586
        System.out.println(arrayS2[0]);  // hello  访问数组的第一个元素
    }
}

求数组的长度: array.length

public class TraverseAarray {
    public static void main(String[] args) {
        int[] arrayA = {1, 2, 5, 6, 9};
        // 遍历数组
        for (int i=0; i<arrayA.length; i++) {
            System.out.println(arrayA[i]);
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/nichengshishaonian/p/11965563.html