Java数组
动态初始化数组(指定长度):
数据类型 [] 数组名称 = new 数据类型[数组长度]
int [] array = new int [10];
静态初始化数组(指定内容):
数据类型 [] 数组名称 = new 数据类型[ ] {…}
静态初始化省略格式
数据类型 [] 数组名称 = {…}
int [] array = new int [] {3,5,10};
数组一旦创建,长度不可改变、
获取数组长度
array.length
Javas数组内存分配
java内存划分为5个部分
1.栈(stack):存放方法中的局部变量,包括方法的参数或者方法{}内的变量,局部变量一旦超出作用域,就会在栈内存中消失
2.堆(heap):凡是new出来的,都在堆中,堆内存中的东西都有一个16进制地址值,且都有默认值
3.方法去(Method Area):存储.class相关信息,包含方法的信息
4.本地方法栈(Native Method Stack):与操作系统相关
5.寄存器(pc Register):与CPU相关
创建改变一个数组时java内存发生的改变:
栈中用于存放数组地址指向堆,堆中存放new出来的具体数据,方法区存放main方法的相关信息包括输入数据输出数据等
Java常用API类
Scanner
Scanner.nextint()用于键盘输入整数类型
Scanner.next()用于键盘输入字符串类型
package test.demo02;
import java.util.Scanner;
public class scannerdemo {
public static void main(String[] args) {
Scanner sca1 = new Scanner(System.in);
int num1=sca1.nextInt();
int num2=sca1.nextInt();
System.out.println("输入的字段和是:"+ (num1+num2));
}
}
Random
Random r = new Random();//生成随机整数
Random r = new Random(10);//生成0-9的随机整数
package test.demo02;
import java.util.Random;
public class scannerdemo {
public static void main(String[] args) {
Random r = new Random();//生成随机整数
Random r = new Random(10);//生成0-9的随机整数
System.out.println("输入的字段和是:"+ (num1+num2));
}
}
ArrayList
ArrayList长度可以随意变化,ArrayList为泛型,后接<>,相当于C++的模板类,<>中的泛型只能是引用型如String或者是自定义的类
如果想在ArrayList中存储基本类型,必须使用基本类型对应的包装类:
字符串String类
字符串可以直接创建,或者通过字符数组或者字节数组创建,底层是创建字节数组,直接创建的字符串会存在于字符串常量池中,所以两个值相同的字符串变量保存的是同一个地址,所以他们两相同。但是通过new创建的字符串不存在于字符串常量池中
static 关键字
用于某类多个对象共享一个数据,静态方法不能访问非静态成员变量,因为内存中是先开辟静态数据再非静态
javac会把对象.数据转换为类.静态数据,访问静态成员变量的时候全程和对象没关系,只和类有关系
静态static内存分配:静态区分配在方法区内
静态代码块:当第一次调用类时,静态代码块只会执行一次,以后再调用不再执行