java学习笔记5.22多维数组以及对象和类

时间:2023-02-24 08:45:16

数组

声明二维数组:
数据类型【】【】 数组名;
数据类型 数组名 【行数】 【列数】;

list = new int[4][3];
int[][] list = {
{1,5,4},
{2,3,1,},
{,,},
};

访问数据 list[2][1] = 2;下标必须在方括号内。
数组的长度:有数组中的行来决定即第一个下标例如
list.length = 4;因为有4行,
其包含数组元素:list[0],list[1],list[2]都是三个元素。
锯齿数组(不规则数组)

int[][]  list = {
{1,2,3,4,5},
{1,2,3,4},
{1.2.3},
{1,2},
{1}
};
如果不知道数组的长度可以这样表述:
int[][] list = new int[5][];
list[0] = new int[5];
list[1] = new int[4];
.
.
.
处理二维数组:

1. 初始化数组

for(int row = 0;row < list.length;row++){
for(int column = 0;column < list[row].length;column++){
list[row][column] = input.nextInt();
}
}
2. 随机值初始化数组
forint row = 0;row < list.length;row++){
for(int column = 0;column < list[row].length;column++){
list[row][column] = (int)(Math.random * 100);
}
}
3. 打印数组

forint row = 0;row < list.length;row++){
for(int column = 0;column < list[row].length;column++){
System.out.print(list[row][column] + " ");
}
System.out.println()
}

4. 求所有元素的和

int total = 0
for(int row = 0;row < list.length;row++){
for(int column = 0; column < list[row].length:column++){
total = total + list[row][column];
}
}

5. 对数组按列求和

for(column = 0;column < list[0].length;column++){
int total = 0;
for(int row =0;row < list.length ;row++){
total = total + list[row][column];
}
System.out.println(total);
}

6. 哪行的和最大,利用maxRow和indexOfMaxRow跟踪和最大值。
int maxRow = 0;
int indexOfMaxRow = 0;
//得到第一行的和,设为最大行
for(int column = 0;column < list[0].length;column++){
maxRow += list[0][column];
}
for(int row = 1;row < list.length;row++){
int totalOfThisRow = 0;
for(int column = 0;column <list[row].length;column++){
totalOfThisRow += list[row][column];
}
//与第一行相比看结果
if(totalOfThisRow > maxRow){
maxRow = totalOfThisRow;
indexOfMaxRow = row;
}
System.out.println("");
}

将二维数组传递给方法:
定义返回数组的方法时返回值写int[][]
在控制台输入文件
java xxx < xxxx.txt
多维数组创建及声明

//6行5列2个元素
double [][][] scores = new double[6][5][2];
double[][][] scores={
{{7.5,20.5},{9.020.5},{,},{,},{}},
{{7.5,20.5},{9.020.5},{,},{,},{}},
{{7.5,20.5},{9.020.5},{,},{,},{}},
{{7.5,20.5},{9.020.5},{,},{,},{}},
{{7.5,20.5},{9.020.5},{,},{,},{}},
{{7.5,20.5},{9.020.5},{,},{,},{}},
}

多维数组每个元素都是数组scores[0]是二维数组长度为5,scores[0][0]长度为5。

类和对象

  • 类的表示方法:类名、成员变量、成员函数。
  • 生成对象的方法:类名 对象名 = new 类名()
    例如Dog dog = new Dog();
  • 对象的使用方法:
    对象.变量
    对象.函数
  • 匿名对象:
    new 类名()
    使用方法:new 类名().变量(函数)
    只能使用一次。
  • 函数的重载:同名函数之间看括号内的参数类型,用参数类型来加以区分。
    作用:可以在同一个类中拥有多个同名的函数。
  • 构造函数:类名()例如 class(){}。
    构造函数是成员函数。特征是:没有返回值的类型定义,名称必须和类名相同。前面不加void
    使用方法:new + 类名()
    同类中如果只声明了一个构造函数,则优先使用这一个而不考虑未声明的 无参数构造函数。仅仅放类中未明确定义构造方法时才会使用默认声明的无参数构造函数
  • 非静态的方法不可以通过 类名.函数()来调用。
  • 实例:一个对象就是类的一个实例,可以从类中创建多个实例,创建实例的过程为实例化,
  • 变量如果没有赋值,boolean默认数据类型为false,数据型默认为0,String为null,char 为’\u0000’
  • 引用存放的是对象的地址,
  • 指向对象。

Random类

产生随机值

Random test = new Random();
//返回一个随机的整数值。
test.nextInt();
//返回一个0到n之间的随机整数值
test.nextInt(100);
//返回一个随机的long型数值
test.nextLong();
//返回一个随机double的值
test.nextDouble();
//返回一个随机的float值
test.nextFloat();
//返回一个随机的boolean值
test.nextBoolean();

Point2D类

  • 引进包
import javafx.geometry.Point2D
Point2D p1 = new Point2D(x1,x2);
PointwD p2 = new Poine2D(x2,y2);
//计算两点之间的距离
p1.distance(p2);
//得到某点的横纵坐标
p1.getX();
p1.getY();
//返回字符串表示
p1.toString();

静态变量和常量使用方法

  • 静态变量
    被类中的所有对象共享静态方法不能访问类中的实例成员。
    如果一个对象修改了静态变量的值,那么同一个类中的所有对象都会受影响。类中的所有对象变量值相同。使用关键词static
    可以使用 类名.变量来调用。
  • 静态常量
    定义final static PI。通常情况下通过访问Math.PI来访问。
  • 非静态方法也称之为实例方法,必须借助对象来访问,静态方法不能使用非静态变量需要用类名直接调用函数:类名.函数()
  • static 还可以定义静态代码框
static {
System.out.println();
}

可见性修饰符

  • 将类储存在包中
package 包名;
public
protected
private
default

数据域封装

为了避免对于数据域直接修改,应该使用private修饰符将数据域声明为私有,这称为数据域封装。
为了访问数据域可以使用get方法返回数据域的值,为了更新数据域的值可以使用set方法。get方法被称为访问器,set方法被称为修改器。

  • 定义get方法
    public returnType getPropertyName()
    public void setPropertyName(dataType propertyValue)
  • 对象数组
    创建数组储存对象:
    类名[] 数组名 = new 类名[长度]
    初始化数组:
for(int i = 0;i < circleArray.length;i++){
circleArray[i] = new Cricle();
}

数组名[下标] = new 类名();
“\’t”:转义字符向后空8个格。
printf(%+-9f)正负号表示+表示输出的数带正负号,-:表示左对齐。*

  • 变量的作用域:
    实例变量和静态变量的作用域都是整个类,无论在哪里声明。
    局部变量和类变量重名时优先使用局部变量。
  • this的用法: