包装类
包装类(Wrapper Class):针对于原生数据类型的包装。所有的包装类(8个)都位于java.lang包下,java中的8个包装类分别是:Byte、Short、Integer、Long、Float、Double、Character、Boolean。他们的使用方式都是一样的,可以实现原生数据类型与包装类型的双向转换。
包装类的作用:java中就属于这八个原生数据类型不属于对象,或者说是引用类型,剩下的都是对象,或者引用类型。
/*
* Interger 在 lang包下,所以不需要导入
* 将int类型转化为Interger,调用Interger的intValue()方法,将包装类中的int值取出
*/
public class HelloWorld {
public static void main(String[] args) {
int a=666;
Integer integer=new Integer(a);
int b=integer.intValue();
System.out.println(a==b);
}
}
数组(Array)
1、数组:相同类型数据的集合就叫做数组。
2、数组中的元素索引是从0开始的,对于数组来说,最大的索引==数组的长度-1
3、java中每个数组都有一个名为length的属性,表示数组的长度。length属性是public,final,int的。数组长度一旦确定,就不能改变大小。
4、数组元素在内存中的存放是连续的。
public class HelloWorld {
public static void main(String[] args) {
int []arr=new int[6];//定义一个名字为arr的数组,数组的长度为6【第一种定义数组】
int []brr={1,2,3,4,5,6};//定义一个名字为brr的数组,里面有6个数组元素【第二种定义数组】
System.out.println(arr[0]);//因为没有给arr赋值,所以输出int的默认值为0
System.out.println(brr[0]);
}
}
5、equals
public class HelloWorld {
public static void main(String[] args) {
int []arr={1,2,3,4,5,6};
int []brr={1,2,3,4,5,6};
System.out.println(arr);
System.out.println(brr);
System.out.println(arr==brr);
System.out.println(arr.equals(brr));
}
}
【说明】:调用equals()方法,此时方法是继承了Object类的方法,而且没有被重写,arr和brr分别是指向不同的数组对象地址,所以输出结果为false。从这边可以明确,对于数组内容的比较千万不能使用equals方法。
6、引用类型的数组
public class HelloWorld {
public static void main(String[] args) {
HelloWorld []persons=new HelloWorld[3];
System.out.println(persons[1]);
}
}
输出结果:
null
【说明】:除了原生数据类型之外,引用类型如果没有赋初值,则其内容为null,null表示不指向任何对象。
public class HelloWorld {
public static void main(String[] args) {
Person []persons=new Person[3];
persons[0]=new Person(10);
persons[1]=new Person(20);
persons[2]=new Person(30);
for (int i = 0; i < persons.length; i++) {
System.out.println(persons[i].age);
}
}
}
class Person{
int age;
public Person(int age){
this.age=age;
}
}
输出结果:
10
20
30
二维数组
二维数组是一种平面的二维结构,本质上是数组的数组。
二维数组的定义方式:
int [][]arr=new int [2][3];//表示2行3列
一维数组体现的是线性结构,二维数组体现的是平面结构。
例子01:输出9x9乘法表
public class HelloWorld {
public static void main(String[] args) {
int [][]arr=new int[9][9];
for (int i = 1; i <=arr.length; i++) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"x"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
定义不规则的数组
int [][]arr=new int[2][];//可以先定义行,后定义列
定义一维数组可以:int [] a=new int []{1,2,3};
定义二维数组可以:int[][]a=new int [][]{1,2,3},{4},{5,6,7,8};注意这里面大括号里面每个大括号表示一行,大括号之间用逗号隔开。
例子02:输出菱形(双重循环)
public class Test {
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 3 - i; j++) {
System.out.print(" ");//输出空格3210
}
for (int j = 1; j < (i + 1) * 2; j++) {
System.out.print("*");//*的个数是1357
}
System.out.println();//4个分行
}
for (int i = 1; i <= 3; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(" ");//输出空格123
}
for (int j = 1; j <= 7 - 2 * i; j++) {
System.out.print("*");//*的个数是531
}
System.out.println();//3个分行
}
}
}