学习java时还是大二的时候,当时很多现在新的特性都没有学习,现在重新复习一下Java基础部分。
Basic
- Javaa虚拟机本身不具备跨平台功能,每个操作系统下有不同版本的虚拟机。
- java的方法就是类似C语言的函数
public static void method_name() { 方法体; }
- 方法名称命名规则 = 例如
小驼峰
。 - 执行方法需要调用。
- 方法定义的顺序无所谓。
- 不能在一个方法内定义另一个方法,方法应该定义在类当中。
- 方法:若干语句的功能集合。
编译器常量优化 在给变量赋值时,如果右侧表达式都是常量,没有任何变量,那么编译器javac将会直接将若干个常量表达式计算得到结果。
例如:
short res = 3 + 8;
编译之后就是
short res = 13;
注意:一旦表达式中有变量参与,就不能进行这种优化了。
overload(重载) = 多个方法的名称相同,但是参数列表不一样。
package cn.mine.day01.demo01; public class Demo03OverLoad { public static void main(String[] args) { System.out.println(sum(10, 20)); System.out.println(sum(10, 20, 30)); } public static int sum(int a, int b) { return a + b; } public static int sum(int a, int b, int c) { return a + b + c; } public static int sum(int a, int b, int c, int d) { return a + b + c + d; } }
- 好处:只需要记住一个方法名称,实现类似的多个功能。
- 方法重载因素
- 参数 个数不同
- 参数类型不同
- 参数不同类型、且顺序不同
- 方法重载与下列因素无关
- 与参数名称无关
- 与方法返回值类型无关
- 在调用
println
语句时,它就是进行了多种数据类型的重载形式。
数组
数组特点
- 引用数据类型
- 元素类型相同
- 数组长度在程序运行期间不可改变
数组初始化
动态初始化(指定长度) =
数据类型[] array_name = new 数据类型[数组长度];
使用动态初始化数组时,其中元素将会自动拥有一个默认值。类型 默认值 int 0 float 0.0 char ‘\u0000’ boolean false 引用 null 静态初始化(指定内容)
- 标准格式 =
数据类型[] array_name = new 数据类型[] {...}
- 虽然静态初始化没有直接指定长度,但是可以根据具体内容推算出来
- 省略格式 =
数据类型[] array_name = {...}
- 标准格式 =
获取数组长度 = arr.length
Java内存划分
划分为5个部分(前三个重要):
栈(Stack) = 存放的都是方法中的局部变量。方法的运行一定在栈中
一旦超出作用域,立刻从栈内存中消失
堆(Heap) = 凡是new出来的东西,都在堆当中
堆内存中的东西都有一个地址值,为16进制。
堆内存中数据,都有默认值。规则:
- int = 0
- float = 0.0
- char = ‘\u0000’
- boolean = false
- 引用类型 = null
方法区(Method Area) = 存放
.class
相关信息,包含方法的信息。本地方法栈(Native Method Stack) = 与操作系统相关
寄存器(pc Register) = 与CPU相关
注:上图出自黑马程序员 Java