1.Java 变量命名规则
首字母:字母 | 下划线_ | $ 符号 | 中文 + 任意多:数字|字母|下划线_| $
正确例子:abc, _abc, $abc, 变量abc,abc123
错误例子:4abc,%abc,^abc,#abc,abc@,abc#,abc^
2. 变量初始化问题
- JVM不会对局部变量进行初始化,所以在使用局部变量前必须赋值,否则编译出错
-
JVM会对类成员变量也就是static变量初始化,时机是:1).在类加载的准备阶段进行默认初始化;2)在初始化阶段进行执行静态变量的赋值操作或者静态代码块进行初始化
3.内部类
内部类包括:1.成员内部类 2.局部内部类 3.匿名内部类 4.静态内部类
- 成员内部类
- 创建操作:成员内部类是依附于外部类而存在的,所以创建一个成员内部类对象必须要有外部类对象存在。创建方式为:
public class Outter {
public Integer integer = 1;
public void fun() {
//创建成员内部类必须存在外部类对象
Inner inner = new Inner();
inner.foo();
}
//内部类
class Inner{
public void foo() {
System.out.println(integer);
}
}
public static void main(String[] args) {
//创建成员内部类必须存在外部类对象
Outter outter = new Outter();
Inner inner = outter.new Inner();
}
}
- 访问操作:外部类访问成员内部类的成员需要先创建其实例才能访问,成员内部类访问外部类可直接访问
public class Outter {
public Integer integer = 1;
public void fun() {
//外部类访问成员内部类 需先创建成员内部类的对象才能访问
Inner inner = new Inner();
inner.foo();
}
//内部类
class Inner{
public void foo() {
//成员内部类可直接访问外部类
System.out.println(integer);
}
}
public static void main(String[] args) {
Outter outter = new Outter();
Inner inner = outter.new Inner();
}
}
- 成员内部类的修饰:成员内部类可通过private,public,protected修饰以及包访问权限,比较不同的是:1)protected修饰的成员内部类只有在继承了外部类时或同一包内,才能访问。2)与外部类不同,外部类只能通过 public访问权限符修饰
2.局部内部类
局部内部类是向局部方法一样定义在方法内部,且不能有修饰符
3.匿名内部类
比较常见不多介绍
4.静态内部类
静态内部类和成员内部类一样是在某个类的内部,但其是通过static修饰,与静态成员一样是类变量,所以创建时不需外部类对象即可创建:
public class Outter {
//静态内部类
static class Inner{
public void foo() {
}
}
public static void main(String[] args) {
Inner inner = new Outter.Inner();
}
}
4. 赋值语句返回值
赋值语句的返回值为左值,也就是变量被赋值后的值。例如:
public static void main(String[] args) {
boolean m = false;
if(m=true)
{
System.out.println("赋值语句返回左值");
}
int a = 10;
System.out.println(a=100);
}
代码输出为:赋值语句返回左值 100
5.数组的创建方式
public static void main(String[] args) {
int[] a = new int[3]; // 正常的数组创建方式
int b[] = new int[3]; // 沿袭了c++习惯的创建方式
int f[] = new int[0]; // 可以声明长度为0的数组
int c[][] = new int[2][3]; // 正常二维数组的创建方式
int d[][] = new int[2][]; // 二维数组的每一行的长度也就是列数可以不指定,因为其不一定
//相等
int[][] e = new int[0][0]; //可以声明长宽都为0的数组
int[]o[] = new int[1][1]; //可以以这种方式声明二维数组
}