JavaSE Day07
目录
多维数组
二维数组
int[][] arr;- 二维数组在内存中的存储方式
- 首先栈内存中创建变量名
- 堆内存中,创建一个数组,这个数组的每个值都是一个一维数组的堆内存地址,并且不连续,但是最后的一维数组的一段连续的堆内存空间;
package day7;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
// 声明
int[][] arr;
// 初始化,创建数组
arr = new int[3][2];
//赋值
arr[0][0] = 12;
arr[0][1] = 2;
arr[1][0] = 5;
arr[1][1] = 8;
arr[2][0] = 14;
arr[2][1] = 12;
// 控制台输入
Scanner input = new Scanner(System.in);
System.out.println("--输入数据:");
for (int i = 0; i < arr.length; i++) {// 外循环行
for (int j = 0; j <arr[i].length ; j++) {// 内循环列
arr[i][j] = input.nextInt();
}
}
//输出
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j] + "\t");
}
System.out.println();
}
}
}
package day7;
public class Demo2 {
public static void main(String[] args) {
// 静态初始化
int[][] arr = {{12, 2}, {5, 8}, {14, 12}};
int[][] arr1 = new int[][]{{12, 2}, {5, 8}, {14, 12}};
// 遍历arr 增强for
for (int[] a : arr) {
for (int b : a) {
System.out.println(b);
}
}
}
}
不规则数组:
低维的数目不同;就相当于二维数组中第二个[]的数量不确定;
多维数组
最多255维,几个中括号就是几维;
int[][][] arr = new int[2][3][4];
类的构建与对象的使用
- 对象: 一切可以被描述的事物(实体)
- 属性: 特征。
- 方法: 动作,行为。
- 类: 相似对象的集合;
类和对象的关系:
- 类是抽象的,对象是具体的
类是对象的抽象; - 类是一个模板
通过此模板创建出来的对象具有共同的特征和属性; - 类是一种数据类型。
引用数据类型。
对象是堆中的一个实例
类的语法:
public
访问修饰符 class 类名{
// 类体
成员:// 属性、方法,构造器,构造块,内部类,
}
类名:规范:帕斯卡
多个单词,每个单词首字母都大写;
注意:对象在内存中,是独立的空间。
内存垃圾回收
堆内存的地址,在栈内存中的变量中的没有引用了;因此这块堆内存就是垃圾;
Person s1 = new Person();
S1 = null;
NullPointException 空指针异常,表示没有初始化对象
方法:
定义:
访问修饰符 返回值类型 方法名(参数,参数){
方法体
}
- 访问修饰符:public 公共的
- 返回值类型:
- void/无返回值类型
- 基本或者引用数据类型
- 方法名是标识符规范
package day7;
// 每个类只描述一件事或一个功能;使用测试类来调用;
public class Person {
// 属性,成员变量(类域)
String name;
int age;
// 方法
// 跑 定义
public void run() {
System.out.println("跑步");
}
//买电脑
public String getComputer(){
System.out.println("买电脑");
return "电脑";
}
public String[] method(){
return new String[]{"电脑","U盘"};
}
// 说话
public void say(){
// Person guojing = new Person();
// this 表示当前类对象,本类对象Person类的对象;
System.out.println("我的名字"+this.name+",年龄是"+this.age);
}
public String say1(){
return "今天天气很好";
}
}
定义方法的注意:
- 带返回值的方法,返回的值得类型与声明的类型要一致;且只能返回一个值;
- 方法不能嵌套定义;
- 不允许把程序逻辑代码直接写在类中;要封装到方法中。
方法调用:
- 不同类,new创建对象调用方法:
- 同一个类中,自定义方法之间,使用this调用;可以省略this;
- 同一个类中,主方法调用自定义方法,需要new创建对象调用;(因为主方法是static。)
带参数的方法:
传参的时候,类型、个数,位置要一致;
package day7;
import java.util.Scanner;
public class Juicer {
// 功能
public void juicing() {
System.out.println("苹果汁");
}
public String juicing1() {
return "苹果汁";
}
// 形式参数 传参:把实参传递给形参,给局部变量food赋值;
public String juicing2(String food1, String food2, int n) {
// Scanner input = new Scanner(System.in);
// System.out.println("放入一个水果");
// String food = input.next();
return food1 + food2 + "汁" + n;
}
}
package day7;
import java.util.Scanner;
public class TestJuicer {
public static void main(String[] args) {
Juicer j001 = new Juicer();
// j001.juicing();
// String str = j001.juicing1();
// System.out.println("用" + str + "做点心");
// Scanner input = new Scanner(System.in);
// System.out.println("放入一个水果");
// String food = input.next();
// String s = j001.juicing2(food);
// 调用 实际参数
String s = j001.juicing2("苹果","西瓜",22);
System.out.println(s);
}
}
方法的好处:
- 解决了代码冗余的问题;代码重用。
- 可维护性;
- 功能封装;(直到方法名,就可以用,但是不需要直到方法的具体代码,类似println)
this关键字
表示当前类对象,本类对象
作用:可以调用当前类的属性
成员变量和局部变量的区别
- 成员变量:在类中定义的变量;
- 局部变量:在方法中或代码块中定义的变量;
- 作用域:
- 成员变量在整个类中都有效;
- 局部变量只在定义它的代码块中有效;
- 初始值
- 成员变量 系统自动初始化;
- 局部变量 系统不会初始化,需要自己初始化赋值;
- 优先级
- 成员变量 和局部变量同名,在局部变量作用域内,优先使用局部变量;
package day7;
public class Score {
int javaSe;
int c;
int db;
public int sum(){
return this.javaSe+this.c+this.db;
}
public int average(){
return this.sum()/3;
}
}
package day7;
import java.util.Scanner;
public class TestScore {
public void f(){}
public void f1(){
this.f();
f();
}
public static void main(String[] args) {
TestScore t = new TestScore();
t.f();
// 匿名对象(只能使用一次)
new TestScore().f();
new TestScore().f(); // 第二个对象
Score s1 = new Score();
Scanner input = new Scanner(System.in);
System.out.println("-输入java成绩:");
s1.javaSe = input.nextInt();
System.out.println("-输入c成绩:");
s1.c = input.nextInt();
System.out.println("输入DB成绩:");
s1.db = input.nextInt();
System.out.println("总成绩是"+s1.sum());
System.out.println("平均成绩是"+s1.average());
}
}


浙公网安备 33010602011771号