结构化编程{ 对一个东西熟悉}(StructureProgramming)
1围绕着程序要解决的任务来设计,
2采用流程图和自顶向下的方法设计,
3编写一个主过程来启动程序流程,随后根据程序流程走向,调用想要的其它过程
面对对象编程(对一个东西不熟悉)(ObjectOriented)
1围绕问题域中的对象来设计
2属性指对象身上什么值的数据
3找对象(找名词):对象可以是问题域中出现的任何人、事物(名词抽离法),
4万物皆对象,对象因我的关注而存在
5找到对象后,编写一个类来描述每个对象的属性和行为
6模块化(建立对象,将问题域化为不同的对象去处理)
类Java中的类用关键字class声明。Java源代码文件中只能包含一公用(public)类,文件名必须与公用类的类名相同,文件扩展名为“.java”。
1类是对象的抽象,对象是类的实例(比如毛,狗都属于动物类)
2类是摸版,对象才是真正具体的存在
3类是具有相同属性和行为的一组对象的抽象
4在软件系统中,用类模拟现实生活中的实体
5相同类型的对象之间可能属性的值可能不同,行为不同
6在类中添加方法(在类中添加行为)
7类与属性(拥有关系)
8向类中添加成员变量(全局变量),成员变量的组成(1访问修饰符:public、private、protected,如果省略访问修饰符,将使用默认访问修饰符2数据类型(基础类型,引用类型)3成员变量名称:必须是一个有效的标识符,后面用分号结束)
9向类中添加方法(一个类的行为成为相关类中的方法)方法的组成(1访问修饰符2返回类型3方法名称,必须是一个有效的标识符4参数列表,在括号中出现(形参,实参)5方法体)
10类是具有相同属性或行为的一组对象的抽象
实例化对象
1创建好了类,然后通过类产生对象(1引用数据类型赋的初值是null,基础数据类型赋的初值是0,2引用数据类型不能强制转换为其他数据类型)
2对象的销毁(1产生了对象,用完后要关心它的摧毁2对象没有任何引用,具备垃圾回收的条件3主动通知垃圾回收机制回收一个对象,只需要:对象=null)
访问对象的属性和方法
使用new关键字产生对象(Employee e=newEmployee())

每个对象都有一个隐含的this变量,它可以访问类的所有信息
Java通过引入包(package)的机制,以解决这两个问题。 在Java中,每个类属于一个包。包有两个基本的用途:
1提供了一个组织类的机制;
2为包中的类提供了一个命名空间。
将类添加到包中;关键字:package,看看使用后的效果同包类相互调用的效果;
不同包的类相互调用的效果:关键字:import
方法组成:访问修饰符 可选修饰发 返回类型 方法名 参数列表
方法的调用:
方法在栈中:先进后出 在队列中:先进先出

实际参数传递到所调用的方法的形参的过程叫值传递

方法调用时,实际参数必须要满足形参所定义的数据参数类型,如果是基本数据类型的话,至少需要保证可以互相转换。

实际参数如果是基本数据类型和String类型,在被调用的方法内部针对形参做任何改变实参所对应的变量都不会改变。但是如果是其他引用数据类型,在被调用的方法内部针对形参做改变,实际参数也会跟着改变。

方法在执行时有三种情况:
1.方法返回一个值,一个基本数据类型或应用类型被传回给方法的调用者。
2.方法不反回一个值。
3. 方法抛出一个异常给方法的调用者。
方法的签名
访问修饰符。访问修饰符的可能值包括public、private、protected或默认访问修饰符
可选修饰符。
方法签名的下一个部分是可选的修饰符,包括static、final、abstract、native以及synchronized。native方法用于编写一个Java访问映射到用不同编程语言编写的方法。
返回类型。方法签名必须包括返回值的类型。如果方法不需要返回一个值,就使用void。
方法名。方法名必须出现在返回值之后。见名知意!!
形式参数列表。在方法名的后面必须是用一对括号括起来的形式参数列表。

当实际参数传递给形式参数时,实际参数的数据被复制给形式参数。
不管传递给方法的实际参数是什么类型,相关的形式参数都会得到该数据的一份拷贝,这就是按值调用的工作原理。
Java里面只有值传递。
行为:代表该对象可以去做什么事情,具备什么能力。
.equals(比较,=)
javaoo的三大特点
三大特点
封装1组装(类由属性与行为组装2类与类3方法与方法)2打包(隐藏属性)(1使用访问修饰符2方法的封装)
继承(extends)
多态(相同的行为。不同的显现)
1重载(静态)根据不同的参数列表来区分(1方法名是一样的2个数不一样3类型可能不一样4顺序可能不一样)
2重写(动态)
访问器(public string get),修改器(public string set)布尔类型在定义访问器与修噶器时,在前面属性开头不要加is
构造器
语法特点
1满足的条件:造器的名称必须与类名相同
2构造器不能声明返回值,也不能返回void
3可以不写,编译器自动会生成一个公共无参的构造器
4构造器如果显示的编写了,编译器就不会再产生默认构造器
5可以存在多个构造器
6编写有参构造器之前先编写一个无参构造器

作用:产生对象
构造器产生对象的步骤
	如果其他程序使用new,构造器()调用构造方法,那么构造器就会失去内存中申请内存空间,用于存放对象
	1去申请的内存空间中为属性分配对应的存储空间(空间有对象那么大);

2去申请的内存空间中,为属性分配对应的存储空间
3属性初始化,引用为空,基础为0,布尔为false
4执行构造器中编写的代码
定义有参构造的潜规则(在进行有参构造前,先定义无参构造)
在构造器中使用this
1只能放在构造器的第一行
2this()代表在同一类其他的构造器
3this.代表对象自身

内存空间
栈(1局部变量2返回地址3方法括号中的参数)
堆(对象,属性,行为)
方法区(双引号中的字符串2finol所修饰的属性3代码块(编译过后的代码))
本地方法区(apl)
程序计数器(代码的执行顺序,方法栈)
访问数组通过下标
用循环去操作集合叫遍历。
数组是存储在一片连续内存区间中的元素的集合。数组是集合中的一个特例,集合中可以放置不同类型的数据类型。
数组与集合区别:数组是放置的是连续的同类型的数据;而集合内数据类型可不同,也可以不连续。
数组中的每个元素必须是相同的数据类型,并且通过索引进行分区。数组中的第一个元素的索引(下标)为0;

数组应用:单一值类型变量有时候很难满足应用程序的设计要求。
数组类型变量可以同时存储多个同类型基础数据类型变量或对象。
数组也是一种引用数据类型。

数组的特点:
1.数组中间只能存放相同类型的数据;
2.数组定义好了之后,内存中元素的从存放是连续的;
3.数组的大小需要在定义的时候就固定好,一旦确定将无法再次修改;

创建一个数组的步骤:
1.声明一个数组变量:(数组的声明方式跟其他的引用数据类型声明变量一模一样)
Int【】 nums = null;/或者是:int nums[] = null;
Nums = new int[20];(方框内的20是数组长度)

2.使用new关键字初始化数组,并指定数组的大小。

如何向数组中添加数据:
for(i = 1 ; i < 20; i++){
System.out.println(“请输入某同学的考试成绩);
int score = scanner.next();
nums[i] = score;
}
演示如何从数组中取出数据
int sum = 0;
for(int I = 0; i < 5 ; i++{
sum += int[];
}

访问数组元素与操作数组时,特别注意,不要超出数组所分配的空间。否则会出现运行时异常:ArrayIndexOutOfBoundsExcepTion

Java语言的数组与其他语言数组的不同之处在于:java中的数组是对象。这样做的好处之一为:java中的每一个数组都有一个length属性来代表数组的大小,可以极大地减少数组访问越界的可能性。(length属性是只读属性,不能更改)
如何获得字符串长度:length方法、
如何获得数组长度:length属性
试图调用空地址变量的属性或方法时会报空指针异常。

数组初始化
在定义数组变量是,即给数组声明长度以及确定内容,这种方式在java中被称为:数组初始化。
String[] names = {“”,””,””,””,””}(数组初始化只能写在同一排)
下面这种情况是有引用但是没有名字的对象,取名为匿名对象。
Person[] person = {new Person(“ 张三 ”),new Person(“ 李四 “),new Person(“ 王五 “)};
这种方式,使用场景是小数组,内容不多的情况下,推荐使用。

下面是 System.arrayCopy的源代码声明 :
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
代码解释:
  Object src : 原数组
int srcPos : 从元数据的起始位置开始
  Object dest : 目标数组
  int destPos : 目标数组的开始起始位置
  int length : 要copy的数组的长度
Arrays的copyOf()方法传回的数组是新的数组对象,所以您改变传回数组中的元素值,也不会影响原来的数组。

copyOf()的第二个自变量指定要建立的新数组长度,如果新数组的长度超过原数组的长度,则保留数组默认值,
多维数组
与一维数组一样,多维数组也是对象,需要一个引用。语法也可以由一维数组过度而来:
一维:int[] b = new int[5];
二维int[][] b = new int[5][5];
方法的递归:方法中调用本方法(方法中必须要有退出本方法的条件)
JavaDoc是java语言中三种注释方法之一

10-06 17:00