本周重点
1.方法
1)方法的调用
2)方法的重载
2.面向对象编程
1)成员变量和局部变量
2)匿名对象
3)权限修饰符
4)封装
5)构造方法
6)构造代码块
7)this关键字
8)static关键字
9)mvc 设计模式
1.那么什么是方法呢?
Java方法是语句的集合,它们在一起执行一个功能。
方法是解决一类问题的步骤的有序组合
方法包含于类或对象中
方法在程序中被创建,在其他地方被引用
1)方法的优点
1. 使程序变得更简短而清晰。
2. 有利于程序维护。
3. 可以提高程序开发的效率。
4. 提高了代码的重用性。
2)方法的命名规则
1. 必须以字母、'_'或'$'开头。
2. 可以包括数字,但不能以它开头。
3)方法的定义
一般情况下,定义一个方法包含以下语法:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
4)方法的调用:
1.在同一个类中方法是如何调用:
直接通过方法名调用.
2.在不同的类中调用其他类的方法:
需要通过创建对象,然后通过对象的方式来调用方法。
5)方法调用的注意事项:
如果方法有参数,那么你在调用方法的时候,你就需要通过参数列表来给他指定相应的参数。如果没有指定或你指定的类型出错就会报错。
1) 方法定义的注意事项:
1.如果没有返回值,是不允许通过return关键字返回结果的。
2.方法是不允许嵌套使用。
3.逻辑代码不允许写在方法的外面。
4.一个类不允许出现两个同名,且参数类型一致的方法。
5.一个类中又可以出现同名的方法
6.一般情况下方法名都会定义的有意义,见名知意。
2. 方法的重载: 指的是方法名一样,参数的类型不一致或者参数的个数不一致,参数类型的位置不一致,或者返回值类型不一致。这样定义的方法叫方法重载。
方法重载作用: 提高效率(方法重载可以让程序更清晰易读)。
2. 什么是面向对象编程:
面向对象编程(java)主要区别于面向过程编程(C语言)。
编程: 就是将现实生活中的场景模拟到程序中。在现实生活中万事万物都是一对象来存在的。
为了让编程实现更接近现实,就有了这样一个面向对象的编程思想。
1)面向对象编程的好处:
1.更接近人类的一个思维方式
2.可以隐藏某些信息,提高程序的可维护性和安全性。
3.提高了程序的重用性。
2)面过程和面向对象的区别:
面向过程侧重于执行的过程。
面向对象侧重于结果,通过对象来获取到最终的结果。
3)java面向对象编程的核心: 找到一个合适的对象做对应的事情。
疑问: 在哪里去找合适的对象?
1.通过sun公司为我们提供好的类,创建对应的对象。但是sun公司提供的类有限。
2.自定义类来创建对象,来完成自己所需要的操作。
java 中对象属于引用数据类型。
3. 成员变量
1) 成员变量: 类的属性,定义在类里面方法的外面
成员变量的作用域:从定义的位置开始到整个类中都可以使用。
成员变量如果没有赋值,会默认给你赋值:
int,short,byte 默认值为0
double, float 默认值为0.0
boolean 默认值为 false
引用数据类型 如:String 默认为null
成员变量可以在定义的时候就赋值。
2) 成员变量的作用:用来描述一个类的共有属性。
成员变量的生命周期: 成员变量在对象被创建出来的时候才被创建,对象什么时候消失,成员变量就什么时候消失。成员变量的生命周期是和对象绑定在一起的。
4.局部变量
1)局部变量: 定义在方法的内部
局部变量作用域:在他所在的方法中有用,从定义的位置开始,到方法的结束。
局部变量是没有有默认值的,你要想使用局部变量就必须给局部变量赋值
局部变量的作用: 在方法中定义一个变量给方法使用。
局部变量的生命周期: 在方法被调用时创建出来,局部变量在出了作用域就消失
2)局部变量的使用注意点:
1.再同一个作用域中不允许出现两个同名局部变量。
2.在不同方法中是可以出现同名的局部变量
3.在同一个类中是允许成员变量和局部变量同名
如果一个方法中出现了和成员变量同名的局部变量,优先是方法中的局部变量。采用的是就近原则。
5.匿名对象: 没有名字的对象
格式:
new 类名();
匿名对象创建出来的时候是没有任何人引用他,如果一个对象没有被引用,就是变成一个垃圾对象,等待Java虚拟机来清理他。
2) 匿名对象的作用:
1.调用某个对象的方法只调用一次,这个时候就可以使用匿名对象。
2.匿名对象可以作为实参来传递。(使用比较多的方面)
3) 匿名对象的使用注意点:
1.一般不会用匿名对象来操作对象的属性。
2.无法通过一个匿名对象来获取属性值。
作用: 简化代码。
1. 任何一们语言,如果他是面向对象的,都会有三大特征。
面向对象的三大特征:
1.封装
2.继承
3.多态
6.权限修饰符: 可以将属性和行为隐藏起来,只允许权限内的人能够访问。(给属性和方法设置访问的权限。)
public : 公开的,公共的。权限最大,任何人都可以进行访问。
private : 私有的 权限最低,只允许在本类中进行访问。
没有定义的权限的默认的 default 比public要小一些允许所有的人来访问它
7.封装
1)封装的使用步骤:
1.用private修饰符来修饰这个属性或者行为。将属性或者行为隐藏起来。
2.需要通过本类中提供操作的方法。公开一个 set方法和get方法,一般用public来修饰。
不一定都是需要设置get和set方法。一般都是用set和get方法。
2)提供一个公开的设置属性和获取属性的方法:
set方法和get方法的命名规范:
set属性名。
get属性名
封装后是否一定需要有set和get方法呢。
不一定,具体的根据需求决定。
3) 封装的好处:
1.提高代码的安全性。
2.简化代码。
3.便于维护代码。(隐藏代码的实现)
实际开发中的规范:
一般实体类的属性都需要封装起来。
8.构造方法的作用: 初始化对象。初始化对象就是给属性赋值。
构造方法的定义格式:
权限修饰符(大于或等于类的权限修饰符) 类名(参数列表){
}
2)构造方法的特点:
1.方法名和类名是一致的。
2.构造方法没有返回值的。
3.在方法名的前面没有返回值类型的声明。
3)构造方法的使用注意事项:
1.构造方法不能够由我们自己调用,他是jvm创建对象时调用的。
2.同一个构造方法只能被调用一次。
3.如果类中没有定义构造方法,jvm会在编译的时候给你添加一个无参的构造方法。
4.如果类中已经定义了构造方法,jvm就不会创建无参的构造方法。这个时候就需要通过指定的构造方法来创建对象。
5.构造方法可以通过重载的方式,定义多种形式的构造方法。
9.构造代码块(初始化代码块): 可以给对象做统一的初始化。
1)构造方法(函数):只能给指定的对象做初始化
构造代码块的格式:
{ 代码块的内容 }
注意: 构造代码块(初始化代码块)它的书写位置和成员变量是一样的。
2)构造代码块的使用注意点:
1.构造代码块它是在创建对象的时调用。
2.每创建一次对象,构造代码块就会被调用一次。
2.代码块:
1.构造代码块(初始化代码块)
2.局部代码块
3.静态代码块
1)构造代码块的使用注意事项:
1.jvm在编译Java源文件时,会默认将成员变量的定义,放在类的最前面。
2.成员变量的赋值实际上是在构造方法中完成的。它会在构造方法的代码之前执行。
3.构造代码块的代码也是在构造方法中执行的,他也是在构造方法的代码之前执行的
4.如果只有成员和构造代码块,按照书写顺序执行。
2. 反编译的格式:
javap -c -l -private Demo1
10.this关键字: 中文意思是"这个"
1) this关键字: 指当前调用方法的所属对象。
理解: 谁调用了这个方法,this 就指的是谁。
2) this关键字的使用:
1.当局部变量和成员变量同名时,可以通过this关键字来获取到成员变量。
2.可以通过this关键字调用本类中(其他)构造方法。
3) this关键字的使用注意点:
如果没有同名的局部变量,方法中调用成员变量时,在编译的时候会默认给给成员变量加一个this
this关键字:this所在方法的调用者对象。
4) this关键字调用其他构造方法使用注意点:
1.this必须是构造器中的第一个语句。
2.一个构造方法中不能够同时调用两个其他的构造方法。
3.构造方法中不要互相调用,会出现死循环。
11. static关键字
1) 如何将数据放到共享区中:
可以用static关键字。
static(静态的):
static:静态修饰符。
static的使用:
1.static用来修饰成员变量:
static修饰成员变量如何获取成员变量:
方式一:
对象.属性名
方式二:
类名.属性名 //推荐大家使用第二种。
注意点: 不要认为static修饰的变量操作简单,就将所有成员变量都使用static来修饰.
数据是真正需要共享的数据就用static来修饰。
2)static的使用注意点:
1.通过static修饰的变量,会存放数据共享区。
2.数据在共享区中只会保存一份数据。
static修饰变量的使用注意点:
1.static 关键字只能修饰成员变量,不能修饰局部变量。
2.static 修饰的变量它的生命周期是和类绑定在一起的。
2.static用来修饰方法
3) 静态的成员变量和非静态的成员变量的区别:
1.调用方式:
静态的成员变量可以通过类和对象两种方式来调用。
非静态的成员变量只能用对象来调用。
2.生命周期:
静态变量的值在类文件被加载时存在。
非静态的成员变量在对象被创建时存在。
3.内存中
静态变量在内存中只有一份数据。
非静态变量,有多少个对象就有多少个数据。
4)static修饰方法: 静态方法。
静态方法的访问方式:
访问方式一:
对象.方法名;
访问方式二:
类.方法名;
5)静态方法和非静态方法的区别:
1.静态方法可以通过类和对象来访问,但是非静态方法只能通过对象来访问。
2.静态方法中不允许直接使用非静态的成员变量。静态方法中只能使用静态的成员变量。
3.非静态方法中既可以使用非静态的成员变量,还可以使用静态的成员变量。
4.静态方法中不能访问非静态方法,只能访问静态的方法。
5.非静态方法中是可以访问静态方法
6.静态方法中不允许有this关键字和super关键字
总结: 静态方法中只能访问静态的属性和行为 ,非静态方法中都可以访问。
6)什么时候使用static来修饰方法呢?
如果方法里面没有对对象的属性/行为直接访问的时候就可以用static来修表示方法。
7)(工具类,Arrays 数组的工具类)
定义一个MyArrays工具类,模拟实现 :
toSting() : 将数组转换为字符串
sort() : 升序排序
8)为什么主方法的格式是固定的.
public : 方法是公开任何人都可以访问。目的就是为了让jvm能够访问到。
static : 可以用类来访问方法,避免创建对象。jvm不知道该如何创建对象。
void : jvm虚拟机拿到返回值没有任何意义。
main : 方法的名字,是约定好。
arguments(参数): 可以在程序运行时传递参数进来。
12.mvc 设计模式 : 整个工程的架构。
1)设计模式:单例设计模式。
设计模式: 用来解决同一类问题的方式。
设计模式实际上最早来源于建筑工人。
打地基-->砌墙-->粉刷.
java中有23中设计模式:
单例设计模式
模板设计模式
装饰者设计模式
观察者设计模式
工厂模式
单例设计模式:
通过单例类只能创建同一个对象单例的使用:
1.需要花费大量资源的操作。
2.网络请求 javaEE servlet
Java代码如何创建一个单例对象。
单例对象的创建步骤:
1.私有化构造方法
2.提供一个静态方法来创建对象
3.定义一个静态的成员变量接收对象
2)赖汉单例设计模式 也不完美。会有线程安全的问题。
class Single
{
//1.私有化构造方法
private Single(){}
//2.创建一个静态的成员变量接收对象
static Single s ;
//3.提供一个初始化对象的方法
public static Single initSingle(){
if(s == null){
s = new Single1();
}
return s;
}
}