Java学习day10
稀疏数组
public class Demo06 {
public static void main(String[] args) {
//1.创建一个二维数组 11*11 0:没有棋子, 1:黑棋, 2:白棋
int[][] array1 = new int[11][11];
array1[1][2] = 1;
array1[2][3] = 2;
//输出原始数组
System.out.println("输出原始数组");
for(int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
System.out.println("===========================");
//转换为稀疏数组
//获取有效值的个数
int sum = 0;
for (int i = 0;i < 11;i++) {
for (int j = 0;j < 11;j ++) {
if (array1[i][j] != 0) {
sum++;
}
}
}
System.out.println("有效值的个数:"+sum);
//创建一个稀疏数组
int[][] array2 = new int[sum+1][3];
array2[0][0] = 11;
array2[0][1] = 11;
array2[0][2] = sum;
//遍历二维数组,将非零的值,存放稀疏数组中
int count = 0;
for (int i=0;i < array1.length;i++) {
for (int j = 0;j < array1[i].length;j++) {
if (array1[i][j] != 0) {
count ++;
array2[count][0] = i ;
array2[count][1] = j ;
array2[count][2] = array1[i][j] ;
}
}
}
//输出稀疏数组
System.out.println("稀疏数组");
for(int i = 0;i< array2.length;i++) {
System.out.println (array2[i][0]+"\t"
+array2[i][1]+"\t"
+array2[i][1]+"\t");
}
System.out.println("===========================");
System.out.println("还原数组");
//1.读取稀疏数组的值
int[][] array3 = new int [array2[0][0]][array2[0][1]];
//2.给其中的元素还原它的值
for (int i = 1;i < array2.length;i++) {
array3[array2[i][0]][array2[i][1]] = array2[i][2];
}
//3.打印
System.out.println("输出还原数组");
for(int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt + "\t");
}
System.out.println();
}
}
}
面向对象编程
什么是面向对象
-
本质:以类的方式组织代码,以对象的组织(封装)数据。
-
抽象
-
三大特性
- 封装
- 继承
- 多态
-
对象,是具体的事物;类,是抽象的,是对对象的抽象。
public class Demo01 {
public static void main(String[] args) {
}
//和类一起加载的
public static void a(){
}
//类实例化之后才存在,new
public void b(){
}
}
//值传递
public class Demo02 {
public static void main(String[] args) {
int a = 1;
System.out.println(a);//1
Demo02.change(a);
System.out.println(a);//1
}
//返回值为空
public static void change(int a) {
a = 10;
}
}
//引用传递:对象,本质还是值传递
public class Demo03 {
public static void main(String[] args) {
Person person = new Person();
System.out.println(person.name);//null
Demo03.change(person);
System.out.println(person.name);//yyc
}
public static void change(Person person) {
//person是一个对象:指向的-->Person person = new Person();这是一个具体的人,可以改变属性
person.name = "yyc";
}
}
//定义了一个Person类,有一个属性:name
class Person {
String name;
}