Javaの財団日6 + 2次元配列(トラバース、合計、逆、インデックス)、オブジェクト指向(クラス、オブジェクト、Javaプログラムを開発し、デザインと機能)

1:二次元アレイ理解

(1)素子アレイは、一次元アレイです。

(2)フォーマット:

データ型[] [] 配列名=新しいデータタイプ[M] [N]。

 

B:データ型[] [] 配列名=新しいデータタイプ[M] []。

Mは一次元アレイの二次元アレイの数を表します。

直接一次元配列の要素数を与えない、この時間は、それが動的に付与することができます。

例えば:

[3] [] [] [] ARR =新しいint型をint型。

ARR [0] =新しいINT [2]。

ARR [1] =新しいINT [3]

ARR [2] =新しいINT [1]。

     

C:データ型[] [] 配列名=新しいデータタイプ[] [] {{...}、{...}、{...}}。

D:データ型[] [] 配列名= {{...}、{...}、{...}}。

例えば:

INT [] [] ARR = {{1,2,3}、{4,6}、{6}}。

     

 

注意:

A:以下の形式は、2次元アレイを表すことができます

a:数据类型 数组名[][] = new 数据类型[m][n];

b:数据类型[] 数组名[] = new 数据类型[m][n];

B:注意下面定义的区别

int x;

int y;

int x,y;

 

int[] x;

int[] y[];

 

int[] x,y[];

(3)案例(掌握):

A:二维数组的遍历

/*

需求:遍历二维数组

两个明确:

返回值类型:void

参数列表:int[][] arr

*/

public static void printArray2(int[][] arr) {

for(int x=0; x<arr.length; x++) {

for(int y=0; y<arr[x].length; y++) {

System.out.print(arr[x][y]+" ");

}

System.out.println();

}

}

B:二维数组的求和

//定义一个求和变量sum,初始化值是0

int sum = 0;

 

//通过遍历就可以得到每一个二维数组的元素。

for(int x=0; x<arr.length; x++) {

for(int y=0; y<arr[x].length; y++) {

//把元素累加即可。

sum += arr[x][y];

}

}

 

//最后输出sum,就是结果。

System.out.println("一年的销售额为:"+sum+"万元");

C:杨辉三角形

 

/*

需求:打印杨辉三角形(行数可以键盘录入)

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

 

分析:看这种图像的规律

A:任何一行的第一列和最后一列都是1

B:从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

 

步骤:

A:首先定义一个二维数组。行数如果是n,我们把列数也先定义为n

  这个n的数据来自于键盘录入。

B:给这个二维数组任何一行的第一列和最后一列赋值为1

C:按照规律给其他元素赋值

从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

D:遍历这个二维数组。

*/

import java.util.Scanner;

class Array2Test3 {

public static void main(String[] args) {

//创建键盘录入对象

Scanner sc = new Scanner(System.in);

 

//这个n的数据来自于键盘录入。

System.out.println("请输入一个数据:");

int n = sc.nextInt();

 

//定义二维数组

int[][] arr = new int[n][n];

 

//给这个二维数组任何一行的第一列和最后一列赋值为1

for(int x=0; x<arr.length; x++) {

arr[x][0] = 1; //任何一行第1

arr[x][x] = 1; //任何一行的最后1

}

 

//按照规律给其他元素赋值

//从第三行开始,每一个数据是它上一行的前一列和它上一行的本列之和。

for(int x=2; x<arr.length; x++) {

//这里如果y<=x是有个小问题的,就是最后一列的问题

//所以这里要减去1

//并且y也应该从1开始,因为第一列也是有值了

for(int y=1; y<=x-1; y++) {

//每一个数据是它上一行的前一列和它上一行的本列之和。

arr[x][y] = arr[x-1][y-1] + arr[x-1][y];

}

}

 

//遍历这个二维数组。

/*

for(int x=0; x<arr.length; x++) {

for(int y=0; y<arr[x].length; y++) {

System.out.print(arr[x][y]+"\t");

}

System.out.println();

}

*/

//这个时候,要注意了,内循环的变化必须和曾经讲过的九九乘法表类似

for(int x=0; x<arr.length; x++) {

for(int y=0; y<=x; y++) {

System.out.print(arr[x][y]+"\t");

}

System.out.println();

}

}

}

 

 

2:两个思考题(理解)

(1)Java中的参数传递问题

Java中只有值传递。

 

基本类型:形式参数的改变不影响实际参数

引用类型:形式参数的改变直接影响实际参数

 

(2)数据加密问题

综合的小案例。

import java.util.Scanner;

class JiaMiDemo2 {

public static void main(String[] args) {

//创建键盘录入对象

Scanner sc = new Scanner(System.in);

 

//请输入一个数据

System.out.println("请输入一个数据(小于8)");

int number = sc.nextInt();

 

//写功能实现把number进行加密

//调用

String result = jiaMi(number);

System.out.println("加密后的结果是:"+result);

}

 

/*

需求:写一个功能,把数据number实现加密。

两个明确:

返回值类型:String 做一个字符串的拼接。

参数列表:int number

*/

public static String jiaMi(int number) {

//定义数组

int[] arr = new int[8];

 

//定义索引

int index = 0;

 

//number中的数据想办法放到数组中

while(number > 0) {

arr[index] = number%10;

index++;

number /= 10;

}

 

//把每个数据加5,然后对10取得余数

for(int x=0; x<index; x++) {

arr[x] += 5;

arr[x] %= 10;

}

 

//把第一位和最后一位交换

int temp = arr[0];

arr[0] = arr[index-1];

arr[index-1] = temp;

 

//把数组的元素拼接成一个字符串返回

//定义一个空内容字符串

String s = "";

 

for(int x=0; x<index; x++) {

s += arr[x];

}

 

return s;

}

}

3:面向对象(掌握)

(1)面向对象

面向对象是基于面向过程的编程思想

(2)面向对象的思想特点

A:是一种更符合我们思考习惯的思想

B:把复杂的事情简单化

C:让我们从执行者变成了指挥者

 

举例:

买电脑

洗衣服

做饭

...

万事万物皆对象

(3)把大象装进冰箱(理解)

A:面向过程实现

B:面向对象实现

 

注意:如何让我们的操作更符合面向对象思想呢?

A:有哪些类

B:每个类有哪些成员

C:类与类的关系

(4)类与对象

A:现实世界的事物

属性 事物的基本描述

行为 事物的功能

B:Java语言中最基本的单位是类。所以,我们要用类来体现事物

C:

成员变量 事物属性

成员方法 事物行为

D:类:是一组相关的属性和行为的集合。是一个抽象的概念。

  对象:是该类事物的具体存在,是一个具体的实例。(对象)

  

  举例:

学生:类

班长:对象

(5)类的定义及使用

A:类的定义

成员变量 定义格式和以前一样,就是位置不同,在类中,方法外。

成员方法 定义格式和以前一样,就是去掉了static

B:使用类的内容

a:创建对象? 格式

类名 对象名 =  new 类名();

b:如何使用成员变量和成员方法呢

对象名.成员变量

对象名.成员方法()

(6)案例:

A:学生类的定义和使用

B:手机类的定义和使用

(7)内存图

A:一个对象的内存图

       

 

B:二个对象的内存图

       

 

C:三个对象的内存图

       

 

(8)Java程序的开发,设计和特征

A:开发:就是不断的创建对象,通过对象调用功能

B:设计:就是管理和维护对象间的关系

C:特征

a:封装

b:继承

c:多态

おすすめ

転載: www.cnblogs.com/zyk2019/p/11332676.html