跟数组的概念基本相同 , 也是容器的概念 !
数组中存储的不再是基本数据类型, 而是数组 !
多维数组, 正常在程序中 很少出现三维以上的数组 !
定义的格式1:
数据类型[][] 二维数组名 = new 数据类型[二维数组长度][一维数组长度];
定义的格式2:
数据类型[][] 二维数组名 = new 数据类型[二维长度][];
定义的格式3:
数据类型[][] 二维数组名 = {{数据1,数据2,数据3},{数据1,数据2,数据3},{数据1,数据2,数据3}};
练习:
从如下多维数组中 寻找最大值:
public class Demo2{
piublic static void main(String[] args){
int[][] arrs = {{1,24,33,55,66,23},{2,4,6,8,10},{36,38,42,55},{123,223,333,1234,54321,22},{-1,-20,-50,60,80}};
/*上面的二维数组中存在五个一维数组
int max = arrs[0][0];
int[] arr1 = arrs[0];
for(int j=0;j<arr1.length;j++){
if(max<arr1[j]){
max = arr1[j];
}
}
int[] arr2 = arrs[1];
for(int j=0;j<arr2.length;j++){
if(max<arr2[j]){
max = arr2[j];
}
}
int[] arr2 = arrs[2];
//----------------
int max = arrs[0][0];
for(int i=0;i<arrs.length;i++){
int[] arr = arrs[i];
for(int j=0;j<arr.length;j++){
if(max<arr[j]){
max = arr[j];
}
}
}
*/
int max = arrs[0][0];
for(int i=0;i<arrs.length;i++){
for(int j=0;j<arrs[i].length;j++){
if(max<arrs[i][j]){
max = arrs[i][j];
}
}
}
System.out.println("这个二维数组中的最大值为:"+max);
}
}
练习:
计算如下二维数组中数据的平均值:
public class Demo3{
piublic static void main(String[] args){
int[][] arrs = {{1,24,33,55,66,23},{2,4,6,8,10},{36,38,42,55},{123,223,333,1234,54321,22},{-1,-20,-50,60,80}};
//在这里补代码
int sum = 0;
int length = 0;
for(int i=0;i<arrs.length;i++){
length += arrs[i].length;
for(int j=0;j<arrs[i].length;j++){
sum += arrs[i][j];
}
}
System.out.println("平均值为: "+ sum/length);
}
}
方法
提高代码的复用率 , 尽量不要重复造轮子
定义
是用于封装一段逻辑的代码块 , 在需要使用时, 可以调用;
方法所定义的元素:
方法由{[修饰符]+返回值类型+方法名+[参数列表]+方法体 }组成
修饰符: 修饰这个方法的访问权限和是否依赖于对象等等;
返回值类型声明: 描述这个方法运行完毕后,一定会返回的数据的类型 !
方法名: 给这段代码块 起名称,再一个class中多个方法之间名称不可重复 ! 方便后续调用时, 进行唯一性的区分 !
参数列表: 在使用此方法时, 需要传递到方法内部进行运算处理的数据 !
方法体: 这个方法的代码块 ! 由’{‘和’}’组成
参数列表详解
两种概念:
在定义方法时, 所描述的是 "形式参数列表"
在调用方法时, 所传递的具体的值, 叫做 "实际参数列表";
参数列表练习:
编写一个打印(你好)方法, 根据传递的整型参数,决定打印的次数 !
public static void a(int count){
for(int i =0 ; i<count;i++){
System.out.println("你好");
}
}
返回值详解:
一个方法执行结束后, 可以返回一个具体的数据, 我们称其为返回值.
在声明方法时, 必须指定返回的类型:
基本数据类型 和 引用数据类型都可以使用
特殊的: void 表示方法没有返回的值!
返回一个数据的方式:
使用关键字 return ;
格式:
return 要返回的数据;
特别注意:
当一个方法执行了return以后, 表示方法产生了结果, 方法会直接中断并结束 !(写在return后的代码 是无法执行的)
返回值类型声明为void的方法, 也可以写return
格式为: return; , 表示方法立即结束 !
练习
设计一个方法, 传递两个整型的数字, 计算两个数字的和, 并返回给方法的调用者:
public static int sum(int a,int b){
int s = a+b;
return s;
}
练习:
设计一个方法, 传递三个整型的数字, 计算三个数字相乘的结果, 并返回给调用者
public static int haha(int a,int b,int c){
System.out.println(“正在运算”);
int d = a*b*c;
System.out.println(“运算完毕, 正在返回结果”);
return d;
}
方法的声明:
修饰符 返回值类型 方法名(参数列表){
//方法的代码块
}
例如:
public static void main(String[] args){
}
练习:
public static void main(String[] args){
//调用方法:
System.out.println(“开始将故事”);
tellStory();
}
public static void tellStory(){
System.out.println(“董飞开着砖机 , 带着200万 ,要去见丈母娘 ~ “);
System.out.println(“丈母娘家比较远 ~ 需要经过一段山路 ~ “);
System.out.println(“董飞开着砖机, 吃着火锅唱着歌 , 突然就遇到了悍匪 ~ “);
System.out.println(“悍匪不但劫财 . 他还劫色 !”);
System.out.println(“董飞很害怕 , 董飞就跟悍匪沟通 ~ “);
System.out.println(“最终呢, 因为董飞的口活好 ~ 悍匪不但把200万还给了他 , 还给了他200万小费 ~ “);
}
面向过程 与 面向对象 对比
问: 如何将一头大象, 装进冰箱里 ~ \
面向过程:
1. 打开冰箱门
2. 把大象放进去
3. 关上冰箱门
面向对象:
1. 创造一个听指挥 会装东西的冰箱 ~
告诉冰箱, 把大象装进去 ~
面向对象
从概念上分为如下三种:
1. 面向对象分析 : OOA思想 (Object Oriented Analysis)
2. 面向对象设计 : OOD思想 (Object Oriented Design)
3. 面向对象程序 : OOP思想 (Object Oriented Programming)
面向对象三大特征:
- 封装性: 对象中所有的特征,内容对外部不可见 !
- 继承性: 可以将一个对象的功能继承下来继续发展 !
- 多态性: 一个事物 可以具备多种形态 !
类与对象的关系 ;
就像生活中 图纸与具体的实物的关系 ,
我们通过类去描述对象具备的特征与行为, 交由JVM来根据这个类去创建对象 !
类表示的是一个共性的产物 ,是一个综合的特征 , 而对象是一个个性的产物 ,是一个个体所具备的特征 !
类
类由属性(特征)和 方法(行为) 组成
属性: 相当于特征 , 例如: 人类的特征: 有姓名, 年龄 等等
属性: 就是直接定义在一个类中的变量 , 我们称其为类的成员变量 , 定义在方法中的变量 我们称其为局部变量;
方法: 相当于行为, 功能, 例如: 冰箱具备装东西的功能
在类中定义的方法, 我们称其为成员方法!
常说的function(函数) 与 method(方法)
只是不同编程语言 对于方法的称呼而已 ~
如何定义一个类
格式:
class 类名{
属性1;
属性2;
...
属性n;
方法1(){}
方法2(){}
...
方法n(){}
}
String
表示的是字符串,
如何定义
String 变量名;
如何进行赋值:
变量名= “具体的文本”;
练习:
设计一个人类 , 具备一些人的特征(属性)与行为(方法)
人具备的特征:
姓名
年龄
性别
人具备的行为:
说话
class Person{
String name;
int age;
char sex;
void say(){
System.out.println("我叫:"+name+",我今年"+age+"岁了,我的性别:"+sex);
}
}
如何创建对象
回忆变量的声明格式:
数据类型 变量名 = 初始化值;
回忆数组的声明格式:
数据类型[] 数组名 = new 数据类型[长度];
通过关键字new 去开辟内存空间, 创建对象
创建对象的格式:
类名 对象名 = new 类名();
案例:
Person p = new Person();
如何给属性赋值
格式:
对象名.属性名=值;
例如:
Person p = new Person();
p.name="董飞";
p.age=18;
p.sex='妖';
如何获取属性的值
格式:
对象名.属性名;
例如:
Person p = new Person();
String haha = p.name;
int heihei = p.age;
System.out.println(p.name);
如何调用对象的方法
格式:
对象名.方法名([实际参数列表]);
例如:
Person p = new Person();
p.say();
练习:
设计一个类:
类名: Student
具备的特征: 姓名name(String), 年龄age(int) ,学号id(int)
具备的行为: 学习learn (只需要打印出, ‘我正在学习’ 即可)
将上述的类, 创建一个对象, 并给它的属性进行赋值, 然后调用它的学习方法
class Student{
//学生的姓名
String name;
//学生的年龄
int age;
//学生的编号
int id;
void learn(){
System.out.println("我正在学习~!我是"+name+",我今年"+age+"岁了,我的学号是:"+id);
}
}
public class Demo9{
public static void main(String[] args){
//创建对象
Student s = new Student();
s.name=”高帆”;
s.age=8;
s.id=110;
s.learn();
}
}
作业:
自行设计 5 个类 , 并使用其进行对象的创建, 属性的赋值, 方法的调用