数组
数组也是一种数据类型,它本身是一种引用类型,例如:int是一个基本类型,但int[](这是定义数组的一种方式)就是一种引用类型。
数组定义3种方法
语法:
int [] 变量名 = new 变量名[数组长度];
int [] 变量名 = new 变量名 []{元素};
int [] 变量名 = {元素};
数组的初始化
-
静态初始化
arrayName = new type[] {element1,element2,…};
显示指定的数组元素的类型必须与new关键字后的type类型相同
eg://定义一个int数组类型的变量,变量名为intArr int [] intArr; //使用静态初始化,初始化数组时只能指定数组元素的初始值,不指定数组长度 int Arr = new int [] {5,6,7,8}; //使用静态初始化,数组元素的类型是定义数组时数组元素类型的子类 Object [] objArr; objArr = new String [] {"java","zhang"};
-
动态初始化
语法:arrayName = new type[length];//length为int类型
执行动态初始化的时候,程序员只需要定义数组的长度,即为每个数组元素指定所需的内存空间,系统将负责为这些数组元素分配初始值
- 整数类型(byte ,short,int,long),数组元素的值为0
- 浮点类型(float,double),数组元素为0.0
- 字符类型(char),数组元素的值为’\u0000’
- 布尔类型(boolean),数组元素的值为 FALSE
- 引用类型(类,接口和数组),数组元素的值为null
数组的访问
==注意:==在访问数组时下标不能大于或等于数组的长度,否则会报下标越界异常。数组的第一个元素下标为0
获取数组的长度:调用数组的length属性
eg:
int len = arr.length;
数组复制
int a= {1,2,3,4}
int b =a;
数组没有赋值一说,=是两个数组同时拥有控制权
-
int [] pins = {1,2,3};
int [] copy = new int[pins.length];
for( int i=0; i!=copy.length; i++)
{
copy[i]=pins[i];
} -
System.arraycopy(源数组,源数组中的起始位置,目标数组,目标数组中的起始位置,要复制的数组元素的个数);
int [] a = {1,2,3,4,5,6}; int [] acopy = new int[6]; System.arraycopy(a,1,acopy,0,4);//结果:2,3,4,5,6,0,0
-
Arrays.copyOf 方法:
获得原来数组的副本,如果newLength大于原数组进行截断处理,若小于则用0或Null进行填充类型 [] newArray = Arrays.copyOf(类型 [] original , int newLength);//此方法可以对数组进行扩容
eg:
int [] arry ={1,12,23};
arry = Arrays.copyOf(arry , arry.length+1);
二维数组的定义与初始化
1. int [][] a = new int[3][5];
2. int [][] a={
{1,2,34},
{2,3,4,5},
{4,3,6} //最后一个逗号可有可无
}
next()和nextLine()的区别
String s = new String("hello world");
String s=input.next();//读一个单词 hello
String s = input.nextLine();//读一句话 hello world
== 和equals()区别
String s;
s =input.next();
System.out.println(s=="bye");//输出bye,false类型不同
System.out.println(s.equals("bye"));//判断内容是否相同
//compareTo比较大小
System.out.println("abc".compareTo("abcd"));
//length获取字符串长度
String name = "hello",
str1 = "123",
str2 = " ",
str3;//没有管理任何String对象,输出会报错
System.out.println(name.length());
System.out.println(str1.length());
System.out.println(str2.length());
//charAt访问String中单个字符
String str = "abc";
System.out.println(str.charAt(1));
遍历str中的字符
for(int i=0; i<str.length(); i++)
{
System.out.println(str.charAt(i));
}
subString字符串截断
String a ="1234hello";
System.out.println(a.substring(2));//获取2往后的所有,包括2 System.out.println(a.substring(2,5));//左闭右开
寻找字符串
indexOf(c) 得到c字符串所在位置,-1表示不存在
indexOf(c,n) 从n位置开始寻找c字符串
indexOf(t) 找到字符串t所在位置
//从右侧开始找
LastIndexOf(c)
LastIndexOf(c,n)
trim()//去除两端的空格
toLowerCase()//小写
toUpperCase()//大写
//以上所有都没有对字符串本身进行改变