java基础
命名:
大驼峰:类名
小驼峰:变量名方法名等其他的
全部大写:常量名字..
// 单行注释
/**/ 多行注释
变量类型 变量名
一、基本类型(8个)
整数:byte-8bit short-16bit int 32-bit long-64bit
浮点数: float 32-bit double 64-bit
布尔型 :boolean -32bit true / false
字符型:char ------>符号----几何图形
运算
++i,先加再赋值
i++,先赋值再加
短路逻辑: && 与 || 或
按位与 (补码) & --------同1为1
按位或 |----同0为0
~ 取反
^ 异或 相异为1,相同为0
二、引用类型
字符串---引用类型
split----分割
indexOf----判断是不是子串,int类型,有返回第一次出现的下标,没有-1
substring----截取,左闭右开
变量
局部变量使用前先赋值
局部变量全局变量重名,局部变量会覆盖全局变量
final
修饰常量,常量名习惯全部大写
定义的时候必须要给初始值,被final修饰的只能赋值一次,不可以二次赋值
final修饰的引用类型不可以二次改变指向
final修饰的类不可以被继承
final修饰的方法不能被重写
final防止指令重排序,遏制流水线优化,保障多线程并发场景下的可见性
final通常和static一起用
java内存图
java程序在运行时,内存主要分为以下几个区域:(绿色为静态变量)
1.方法区:用于存储类的信息、静态变量、常量池等。字符串常量池就位于方法区中。
2.栈区:用于存储局部变量和方法调用的相关信息。
3.堆区:用于存储对象实例。new创建的对象都是在堆当中开辟空间
演示示例:
package come.java.basicClass;
public class Person {
public int age;
public int[] arr;
public String name="张三";
public static int height = 168;
public static int[] brr = {7,8,9};
public static String play ="足球";
public void run() {
System.out.println("run");
}
public static void eat() {
System.out.println("ear");
}
}
package come.java.basicClass;
public class PersonTest {
public int a =10;
public static int b =10;
public static void main(String[] args) {
Person.eat();
System.out.println(Person.play);
Person aa = new Person();
aa.run();
aa.name="张三";
System.out.println(aa.name);
fly();
System.out.println(b);
PersonTest bb = new PersonTest();
System.out.println(bb.a);
bb.jump();
}
private void jump() {
// TODO Auto-generated method stub
}
private static void fly() {
// TODO Auto-generated method stub
}
}
代码描述
Person 类:包含普通属性(age、arr、name)和静态属性(height、brr、play),还有普通方法(run)和静态方法(eat)。
test 类:包含普通属性(a)和静态属性(b),静态方法(fly)和普通方法(jump)
1.类加载阶段:
方法区:
加载Person类和test类的信息;
为Person类的静态属性分配内存并初始化:height=168,brr记录包含7,8,9的数组的地址,play记录足球的地址;
为test类分配内存并初始化:b=10;
2.main方法执行阶段:
①栈:
main入栈;
调用Person.eat(),方法入栈,执行完出栈;
new创建Person对象aa,栈中存储aa这个引用变量,在堆中开辟空间;
调用aa.run(),方法入栈,执行完出栈;
aa的name记录字符串常量池中的张三的地址;
fly()入栈,执行完出栈;
创建test对象bb,栈中存储bb这个引用变量,指向堆中new出来的对象;
调用test.jump(),入栈,执行完出栈
②堆:
创建Person对象aa,包含普通属性age,arr,name,run()
创建test对象bb,包含普通属性a,jump()