数组
什么是数组?
数组是存储在一个连续的内存块中的元素集合
数组中的每个元素必须是相同的数据类型,并且通过索引 进行区分。
数组中的第一个元素的索引为0
为什么要使用数组?
单一值类型变量有时候很难满足应用程序的设计要求。
数组类型变量可以同时存储多个同类型基础数据类型变量或对象。
创建数组
声明数组
int score [];
int [] score;//提倡使用的方式 分配空间
score = new int [10];(分配空间后,默认的值是0)
ArrayIndexOutOfBoundExceotion(数组下标越界)
声明并分配空间
int [] score = new int [10];
初始化
score [0] = 1;
声明、分配空间并初始化
int [] score = new int []{1,2,3,4,5};
int [] score = {1,2,3,4,5};//不能分开成两条语句
数组的大小(长度)
用到length属性
例如:for(int i = 0;i < score.length;i++){ sum += score; }
int avg = sum / score.length;
java中的数组是对象
补充
循环结构for each:用于数组或者集合的遍历操作
用法:for(单个数据类型 变量 : 数组或集合的名称){
}
例如: for (int item : score){ sum += score; }
注意:不可以通过item改变数组元素的值
对象数组/* 难点 */
User [] users = new User[100];
数组拷贝
使用Arrays.copyof(oraginalArrays,length)
int [] score = new int []{1,2,3,4,5};
int [] temp = Arrays.copyof(score,score.length);
数组的排序(升序)
签名 public static void sort(int [] a)
多维数组
arrays[行][列]
arrays.length 的结果值是行数
arrays[0].length的结果是列数
如何遍历?
for (int [] is : arr){
for(int [] i : is){
}
}
三、JVM
java程序运行在JVM上
JVM是java程序和操作系统之间的桥梁
JVM实现了java的平台无关性
JVM是内存分配原理的基础与前提
内存分配
——寄存器
JVM内部虚拟寄存器,存取速度非常快,程序不可控制
——栈(First in,last out)
保存局部变量的值,包括:
1、用来保存基本数据类型;
2、保存类的实例(即堆区对象)的引用(指针)
——堆
用来存放动态产生的数据,比如new出来的对象。
注意创建出来的对象只包含属于各自成员变量,并不包含成员方法。
因为同一个类的对象拥有各自的成员变量,存储在各自的堆中。
——java运行过程涉及的内存区域
1、常量池
常量池就是这个类型用到的常量的一个有序集合
例如字符串的创建
String str = "abc";
这里是在常量池中查找或者创建abc,再由栈引用常量池中的值
而String str2 = new String("abc");(这儿会创建两个对象,分别在堆和常量池中)
先在堆中拷贝下常量池中的值,再由栈引用堆中的值
注意: System.out.println(str == str2);比较的是地址的值,返回false;
2、代码段
3、数据段
字符串常用的方法
测试后缀名字是否相同
public boolean endswith(String suffix);
返回指定字符在此字符串中第一次出现的索引
public int indexOf(int ch);
返回值是否为空
public boolean isEmpty();
当且仅当length()为0时返回true.
分割字符串
public String[] split (String regex);
Regex
结果 : { "boo", "and", "foo" }
o { "b", "", ":and:f" }
返回一个新的字符串,它是此字符串的一个子字符串。
该子字符串从指定索引处的字符开始, 直到此字符串末尾。
public String substring(int beginIndex);
示例:
"unhappy".substring(2) returns "happy"
"Harbison".substring(3) returns "bison"
"emptiness".substring(9) returns "" (an empty string)
使用默认语言环境的规则
将此 String 中的所有字符都转换为小写
public String toLowerCase();
使用默认语言环境的规则将此
String 中的所有字符都转换为大写
public String toUpperCase();
返回字符串的副本,忽略前导空白和尾部空白(去掉前后空格)
public String trim();
字符串的拼接
String name = "张三";
String address = "成都";
String infor = name + address;
StringBuilder = new StringBuilder();
四、补充
在字符串中,length是一个属性,后面不加括号
而在求字符串的长度的时候,调用的是一个方法,length后面要加括号
访问修饰符
√表示可以使用
本类 同一包中不同类 不同包 子类
public √ √ √ √
protected √ √ √
default √ √
private √