(1).类的定义:一类具有相同属性(静态特性)和特征(动态特性 方法)的事或物的集合
(2).对象的定义:是某个类中某一个具体的个体就叫该类的一个对象(实体)
(3).类和对象的学习要点 a.基础语法 如何定义一个类 如何通过类来创建一个对象 b.学习面向对象编程思想(一种程序的写法思路 类和接口) 面向过程式的编程思想 冰箱开门 把大象放进去 把冰箱门关上 睁眼->起床->穿衣->洗漱->出门->吃饭->上厕所->上课 睁眼->上课 睁眼->穿衣->起床->出门->上课->吃饭->洗漱 面向对象编程思想 把大象关冰箱 这个事情一共有几个类 [大象(进入XX里面) 冰箱(开门 关门)] 冰箱对象.开门() 冰箱对象.关门() 区块链->去中心化 思维方式要发生改变: 老子 《道德经》道可道 非常道, 人法地 地法天 天法道 道法自然 让我们的写完的程序更能还原世间万物运行过程 老太太[上交通工具 下交通工具]上公交车[进站 上车 下车 ]
(4).代码的实现a.定义类中的属性:
public class Person {//类 //属性(静态行为特征) 访问范围修饰符[public] 数据类型 变量名=值[默认值 String null] public String name="张三";//字符串 null public int age=30;//默认是0 public int height=170; public int weight=100; //方法(动态行为特征) } |
Person px = new Person();//类名 变量名 = new 类名(); |
c.属性的使用
|
深入灵魂的问题:为啥要用属性呢?代码上为了方便对变量进行统一的管理,程序设计上是为了让类具有某些特定的静态特征
b.方法方法的基本组成部分:
1.访问范围修饰符[public] 2.返回值 : 方法做完事情以后给别人的结果,并且这个结果其他程序继续使用 - 返回值可以有 也可以没有
3.方法名 任意:见名知意 驼峰法[如果该名字由多个单个单词描述,则该单词首字母小写,如果由多个单词组成,则第一个字母小写,其他单词首字母大写 chiFanHao]
4.参数列表 : 做事情的时候别人给我的 可以有 也可以没有白哥-类 给白哥买烟(A.属性 B.方法)public 返回值(A.有 B.没有) 买烟(参数 A.有 B.没有)
//无返回值 无参数方法 -- 方法定义 public void test(){ System.out.println("哎呀 我是一个无返回值 无参数滴方法"); } //方法的调用和执行 - 调用式:在main中发生并且执行 注意 调用顺序决定执行顺序 Animal an = new Animal(); an.test(); //需要注意的地方 //1.语法 //2.调用和执行的顺序 //3.方法有啥用?方便于我们对复杂程序的封装使用,定义一次,以后使用起来非常的方便 //无返回值 有参数 -- 方法 //方法定义 public void testOne(int a,int b){ int sum = a/b; System.out.println("除法结果:"+sum); System.out.println("有了个值:"+a); System.out.println("又有了个值:"+b); } //调用 Animal an = new Animal(); an.testOne(10,20); 注意:方法的参数 在方法定义时,不用考虑具体的值,可以认为a,b已经存在值了,但是调用时必须给具体值,否则会报错,参数的个数和类型没有具体要求和限制 //有返回值 无参数 public int testTwo(){ System.out.println("我是一个有返回值的方法"); return 1; } //调用 Animal an = new Animal(); int v = an.testTwo(); System.out.println(v); //注意:有返回值的方法,必须在定义完方法以后,按照方法的要求添加适合的返回值。调用时,可以接受方法的返回值,但是接受时的数据类型必须和方法返回值的数据类型一致。也可以不接受 //有返回值 有参数 //定义 public int testThree(int a,int b){ System.out.println("我是有返回值 有参数的方法"); int sum = a + b; return sum; } //调用 Animal an = new Animal(); int value = an.testThree(10,20); System.out.println(value); |
(5).引用类型特性 基本数据类型和引用类型区别(6).使用数组来充当属性,参数和返回值 a.数组当属性 (a). 数组充当属性时,如果不赋值,它会有默认值为null (b).数组属性的静态初始化形式有两种方式 在属性声明时可以直接使用静态初始化方式
public int[] values = {1,2,3};//默认值 - 初始化 |
在属性使用时那么只能以完成的静态初始化手段对其进行赋值
public static void main(String[] args) { Person p = new Person(); System.out.println(p.values); //静态初始化对属性赋值 p.values = new int[]{1,2,3}; //动态初始化 } |
(c).数组属性动态初始化1.属性使用时初始化
p.values = new int[3]; p.values[0] = 1; p.values[1] = 2; p.values[2] = 3; |
2.声明时动态初始化
//定义属性时对数组进行初始化 public int[] values = new int[3];//默认值 - 初始化 //在后续使用时对数组元素赋值 Person p = new Person(); p.values[0] = 1; p.values[1] = 2; p.values[2] = 3; for (int a : p.values){ System.out.println(a); } //也可以在使用时完成动态初始化的全部流程 p.values = new int[3]; p.values[0] = 1; p.values[1] = 2; p.values[2] = 3; |
b.数组作为方法的参数
public class ArrayUtils { //数组作为方法的参数 //找到任意数组的中的最大值 //是否需要返回值 是否需要参数 public int findMax(int[] values){ int max = values[0]; for (int i = 1;i < values.length;i++){ if (values[i] > max){ max = values[i]; } } return max; } public static void main(String[] args) { ArrayUtils au = new ArrayUtils(); int m = au.findMax(new int[]{5,1,3,1,6,8,10,2}); System.out.println(m); } } |
c.数组当返回值
public int[] heBing(int[] v1,int[] v2){ int[] v = new int[v1.length+v2.length]; //赋值 for (int i = 0;i < v1.length;i++){ v[i] = v1[i]; } for (int i = 0;i < v2.length;i++){ v[v1.length+i] = v2[i]; } return v; } |
|