文章目录
- 1.二维数组
- 2.不规则数组
- 3.面向对象
- 3.1 对象
- 3.2 属性,方法
- 3.3 类
- 3.4 类和对象的关系
- 4.类的应用
- 4.1 定义
- 4.2 属性
- 5.方法
- 5.1 定义
- 5.2 方法的使用
- 5.2.1 实例一:1,2
- 5.2.2实例二:1,2
- 实例三:1,2
- 5.3 总结方法调用
- 5.2 常见错误代码
- 5.3 this
- 6.编程:二维数组 计算每个班级成绩和
- 7.编程:不规则数组 杨辉三角形
- 8.编程:方法测试
- 9.注意
1.二维数组
public static void main(String[] args) {
// 二维 动态初始化
//二维数组的长度:元素的个数][每个元素存储的一维数组的大小]
int [][] 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 superman = 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] = superman.nextInt();
}
}
//基本for
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();
}
//增强for
for( int [] ar: arr) {
for(int a : ar) {
System.out.print(a+"\t");
}
System.out.println();
}
}
2.不规则数组
public static void main(String[] args) {
// 不规则数组 动态初始化----------------------------------
int [][] arr = new int[3][];
//给每个元素存储的一维数组开辟空间
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[4];
for(int [] ar : arr) {
for(int a : ar) {
System.out.print(a + "\t");
}
System.out.println();
}
//静态初始化--------------------------------------------
int [][] arr1 = {{12,2},{5,8,6},{14,12,44,3}};
int [][] arr2 ;
arr2 = new int[][] {{12,2},{5,8,6},{14,12,44,3}};
for(int [] ar : arr1) {
for(int a : ar) {
System.out.print(a + "\t");
}
System.out.println();
}
}
多维数组内存:
3.面向对象
3.1 对象
对象:一切可以被描述的事物。
3.2 属性,方法
属性: 对象的特征。
方法:动作,行为。
3.3 类
类:相似对象的集合。
3.4 类和对象的关系
1.类是对象的抽象,对象是类的具体化;
2.类是一个模板,根据此模板可以创建出对象,这些对象具备
共同的特征和行为。
3.类是一种数据类型,是引用数据类型;对象 是对应的引用变量。
4.类的应用
4.1 定义
语法:
访问修饰符 关键字 规范:大驼峰命名法(帕斯卡)
public class 类名{ //类体
//成员
属性;
方法();
}
大驼峰命名法(帕斯卡): 多个单词组成 ,每个单词首字母都大写。
Demo
MyDemo
4.2 属性
示例:
对象内存图
//创建一个郭靖,(对象)
//声明了一个对象
// 数据类型 对象名
Person guojing ;
//创建对象
guojing = new Person();
//给属性赋值
guojing.name = "郭靖";
guojing.age = 22;
//输出 属性的值
System.out.println(guojing.name);
System.out.println(guojing.age);
对象之间的独立性
public static void main(String[] args) {
// null字面值:空类型 空对象
Person guojing = null;
guojing = new Person();
guojing.name = "郭靖";
guojing.age = 22;
System.out.println(guojing.name);
System.out.println(guojing.age);
/*不同对象 在内存中是独立的空间,
* 每个对象都有自己的成员变量进行维护。
* 一个对象 的 成员数据修改,
* 不会影响另一个对象。
*/
Person yangkang = new Person();
System.out.println(yangkang.name);
System.out.println(yangkang.age );
}
*不同对象 在内存中是独立的空间,
* 每个对象都有自己的成员变量进行维护。
* 一个对象 的 成员数据修改,
* 不会影响另一个对象。
总结语法:
创建对象:
类型 对象名 = new 类型();
例如:Person guojing = new Person();
给属性赋值:
对象名.属性名 = 值;
例如: guojing.name = "郭靖";
5.方法
5.1 定义
public void 无返回值类型
返回值类型:基本和引用
方法定义:
public class Person {
//属性,成员变量,实例成员变量
String name;
int age;
//吃 方法的定义
public void eat() {
System.out.println("吃饭");
}
public String getComputer() {
return "HP电脑";
}
}
带返回值类型的方法:
注意:
1.返回值 必须用 return 返回,才能结束方法;
2.返回的值 的类型 与声明的类型必须相符;
3.只能返回一个值。
方法调用语法:
对象名.方法名();
例如:guojing.eat();
String s = guojing.getComputer();
5.2 方法的使用
5.2.1 实例一:1,2
1.定义 方法:Person
public class Person {
//属性,成员变量,实例成员变量
String name;
int age;
//吃 方法的定义
public void eat() {
System.out.println("吃饭");
}
//买电脑 方法的定义
public String getComputer() {
return "HP电脑";
}
//介绍
public void show() {
// 隐式 使用this
System.out.println(name + "," + age);
//显示使用了this
System.out.println(this.name + "," + this.age);
}
public String show1() {
return this.name + "," + this.age;
}
///数组 方法的定义
public int[] getValue() {
int [] arr = {11,22,33};
return arr;
}
}
2.调用 方法:Person
第一段:
public class TestPerson1 {
public static void main(String[] args) {
// null字面值:空类型 空对象
Person guojing = null;
guojing = new Person();
guojing.name = "郭靖";
guojing.age = 22;
System.out.println(guojing.name);
System.out.println(guojing.age);
System.out.println(guojing);
/*不同对象 在内存中是独立的空间,
* 每个对象都有自己的成员变量进行维护。
* 一个对象 的 成员数据修改,
* 不会影响另一个对象。
*/
Person yangkang = new Person();
yangkang.name = "杨康";
yangkang.age = 23;
System.out.println(yangkang.name);
System.out.println(yangkang.age );
System.out.println(yangkang);
yangkang = null;
System.out.println(yangkang.name);
System.out.println(yangkang.age);
}
}
第二段:
public class TestPerson2 {
public static void main(String[] args) {
//
Person guojing = new Person();
//方法的调用
guojing.eat();
System.out.println(guojing.name);//null
System.out.println(guojing.getComputer());
String s = guojing.getComputer();
System.out.println(s);
}
}
第三段:
public class TestPerson3 {
public static void main(String[] args) {
Person guojing = new Person();
guojing.name = "郭靖";
guojing.age = 22;
// guojing.show();//
String s = guojing.show1();
// System.out.println(s);
// s = s + "hello";
if(s.equals("hello")) {
System.out.println(s);
}
}
}
5.2.2实例二:1,2
1.定义 方法:Score
public class Score {
int javaSe;
int c;
int db;
public int sum() {
return javaSe + c + db;
}
public int avg() {
return sum() / 3;
}
}
2.调用 方法:Score
import java.util.Scanner;
public class TestScore {
public void f() {
System.out.println("f");
}
public void ff() {
// this.f();
f();
}
public static void main(String[] args) {
TestScore t = new TestScore();
t.f();
Score score = new Score();
Scanner superman = new Scanner(System.in);
System.out.println("--输入javaSe成绩:");
score.javaSe = superman.nextInt();
System.out.println("--输入c成绩:");
score.c = superman.nextInt();
System.out.println("--输入db成绩:");
score.db = superman.nextInt();
System.out.println("总成绩:" + score.sum());
System.out.println("平均成绩:" + score.avg());
}
}
实例三:1,2
1.定义 方法:Cat
public class Cat {
String name;
String type;
//方法
public void run() {
System.out.println("跑");
}
public void play() {
System.out.println("玩儿");
}
public String say() {
return "我是一只小猫";
}
}
2.调用 方法:Cat
public class TestCat {
public static void main(String[] args) {
Cat xiaohua = new Cat();
xiaohua.name = "小花";
xiaohua.type = "波斯猫";
System.out.println(xiaohua.name + "," + xiaohua.type);
Cat jiafei = new Cat();
jiafei.name = "加菲";
jiafei.type = "加菲猫";
System.out.println(jiafei.name + "," + jiafei.type);
jiafei.run();
jiafei.play();
System.out.println(jiafei.say());
}
}
5.3 总结方法调用
总结方法调用:
1.同一个类中:
自定义方法 互相调用可以使用this,也可以省略this;
同一个类中的主方法中 调用 自定义方法:
必须显示 new 创建对象调用,因为 main是static的。
2.不同类中:
必须显示 new 创建对象调用。
5.2 常见错误代码
5.3 this
this:
表示 本类对象,当前类对象
作用:调用类中的成员。属性,方法
//介绍
public void show() {
System.out.println(this.name + "," + this.age);
}
6.编程:二维数组 计算每个班级成绩和
- 练习:二维数组
- 三个班级,每个班级3个人,计算每个班级成绩和。
import java.util.Scanner;
public class Demo3_exam {
public static void main(String[] args) {
int [][] arr = new int[3][3];
//赋值
Scanner superman = new Scanner(System.in);
for(int i = 0; i < arr.length; i++) {
System.out.println("--输入第"+ (i+1) + "个班级的成绩:");
for(int j = 0; j < arr[i].length; j ++) {
arr[i][j] = superman.nextInt();
}
}
//计算输出
int sum = 0;
for(int i =0; i < arr.length; i++) {
sum = 0;//
for(int j = 0; j < arr[i].length; j++) {
sum += arr[i][j];
}
System.out.println("第"+(i+1) +"个班级成绩:" + sum);
}
}
}
7.编程:不规则数组 杨辉三角形
public class Demo3 {
public static void main(String[] args) {
int [][]arr = new int [7][];
//分配空间
for (int i = 0; i < arr.length; i++) {
arr [i] = new int [i+1];
}
//赋值
for (int i = 0; i < arr.length; i++) {//行
for (int j = 0; j <=i; j++) {//列
if ( j == 0 ||i == j ) {
arr[i][j] = 1;
} else {
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
for (int[] ar : arr) {
for (int a : ar) {
System.out.print(a+"\t");
}System.out.println(" ");
}
}
}
8.编程:方法测试
import java.util.Scanner;
public class TestMethod {
public void f1() {
for(int i = 1; i <= 5; i++) {
for(int j = 1; j <= 5; j++) {
System.out.print("*");
}
System.out.println();
}
}
public void f2() {
for(int i = 1; i <= 8; i++) {
for(int j = 1; j <= 8; j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args) {
//上面的太麻烦了
/*我们来简化一下:
* 方法:
* 1.功能封装;
* 2.代码重用;
*/
/ Scanner superman = new Scanner(System.in);
/ int n = superman.nextInt();
TestMethod t = new TestMethod();
t.f1();
t.f2();
t.f1();
t.f2();
}
}
9.注意
1.任何对象都具有属性和方法
2.访问时的格式为:对象名.属性名
例如:
System.out.println(guojing.name); System.out.println(guojing.age);
3.对象之间互不干扰
4.当空指针时(null),那么就无法查找到它的引用对象了,当占用过多时,java会自动将它释放掉。
5.方法的好处:
隐藏,便于使用