java基础知识点
- 格式:doc
- 大小:88.00 KB
- 文档页数:8
学习方法
1、基本功 背程序。多敲,多写
2、坚持不懈
3、多积累问题,通常爱热心帮助其他人的,在这方面都是非常强悍的。
4、多看书,(thinking in java)(java 编程思想)
5、温故而知新,多去温习前面学过的知识
6、多找题目,
7、多交流
面向对象概述
面向过程思想:强调的是功能和行为
面向对象思想:将功能封装进对象,强调具备功能的对象
面向对象的三个基本特征。封装 继承 多态
什么是类:类就是对现实生活中事物的描述。描述事物其实就是在描述事物的属性行为
什么是对象:对象就是这类事物中实实在在的个体
为什么定义类:根据需求,以后的开发其实就是在找对象,没有就要创建一个对象
对象必须具备:属性和方法
面向对象的特点:找对象,建立对象,使用对象,维护对象的关系
面向对象内存分析
Cat c=new Cat();
面向对象的一些知识点·
类中的属性被称为成员变量(每个对象的属性都不同)
类中的方法被称为成员方法(每个对象共享类中的方法)
方法的种类:
1、无参无返回 public void get(){}
2、无参有返回 public int get(){}
3、有参无返回 public void get(String A){}
4、有参有返回 public String get(int a){}
根据需求来定义属性和方法
关键字
return 返回语句,被用于返回
this 用来指当前对象
(注释:1、在类的方法定义中使用this关键字代表使用该方法的对象的引用。2、有时使用this可以处理方法中成员变量和参数重名的问题。3、this可以看作一个变量他的值是当前对象的引用。)
private 隐藏类中方法或属性对外界的可见性,常用于封装
toString 每个类的一个默认方法,用于把类以字符串显示
(注释:1、在JAVA中,所有对象都有toString()这个方法。2、创建类时没有定义toString方法输出对象时会输出对象的哈希码值。3、他通常只是为了方便输出,例如:System.out.println(xx);,括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法。4、它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法。) 封装
1、封装(encapsulation)就是把不想或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开。
2、做法:修改属性的访问权限或者限制对属性的访问。并为每一个属性创建一对取值方法和赋值方法,用于对这些属性的访问。
方法的重载
方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法,调用时会根据不同的参数列表选择对应的方法。
构造方法(构造函数)
1、使用 new+构造方法 创建一个新的对象。
2、构造函数是定义在java类中的一个用来初始化对象的函数。
3、构造函数与类同名且没有返回值。
约定俗称的命名规则
1、类名首字母必须大写
2、方法和属性必须小写
3、由多个单词组成的类名或方法必须采用驼峰标识
如:类名 StudentAdmin 方法或属性:studentName
构造代码块
1、特点:对象一建立就运行了,而且优先于构造函数执行
2、作用:给对象进行初始化
3、构造代码块和构造方法的区别:
构造方法是给对应的对象进行初始化,构造代码块是给所有的对象进行统一的初始化
4、构造代码块中定义是不同对象共性的初始化内容
构造函数之间的调用
1、this:看上去,用来区分局部变量和成员变量同名的情况
2、this:就是代表本类的对象,this代表它所在函数(方法)所属对象的引用
3、构造函数之间的调用只能通过this语句来完成
4、构造函数之间进行调用时this语句只能出现在第一行,初始化要先执行,如果初始化当中还有初始化,那就去执行更细节的初始化
Static 关键字
作用:是一个修饰符,用于修饰成员(成员变量,成员方法)
(注释:不可以修饰局部变量)
1、被static修饰后的变量只有一份
2、当成员被static修饰之后,多了一种访问方式,除了可以被对象调用之外,还可以被类直接调用
(格式:类名.方法名)
static的特点:
1、随着类的加载而被加载
2、优先于对象的存在 3、被所有的对象所共享的
4、可以直接被类名所调用
(注释:被static修饰过的成员变量称为静态变量,也称为类变量。没有被static修饰过的成员变量称为实例变量)
存放位置:
1、.类变量随着类的加载而存在于data内存区
2、实例变量随着对象的建立而存在于堆内存
生命周期:
1、类变量生命周期最长,随着类的消失而消失
2、实例变量生命周期比类变量短,它是随着对象的消失而消失
方法的注意事项:
1、静态的方法只能访问静态的成员
2、非静态的方法既能访问静态成员(成员变量,成员方法)也能访问非静态成员(成员变量,成员方法)
3、静态的方法中是不可以定义this super关键字。因为静态成员优先于对象存在,所以静态方法不可以出现this
什么时候使用静态:
static所修饰的内容是成员(成员变量,方法)
从两个方面入手:
1.什么时候使用静态成员变量:当属于同一个类的所有对象出现共享数据时,需要将储存这个共享数据的成员变量用static修饰
2.什么时候使用静态方法:当功能内部没有访问到非静态的成员时(对象特有的数据)那么该功能可以定义成静态的
主函数(主方法)
1、public(访问修饰符,公共的)代表该类或者该函数访问权限是最大的
2、Static 代表主函数随着类的加载就已经存在了
3、void 代表主函数没有具体的返回值
4、main main不是java中的关键字,它是一个特殊的单词,它能够被JVM(java虚拟机)所识别
5、String[] args 函数的参数,参数类型是一个字符串数组,该数组的元素是字符串
静态工具类
1、每一个应用程序都有共性的功能,可以将这个些功能进行抽取,独立封装。让其可以重复使用
2、对象的作用:对象是用来封装数据的,只要这个类里面有非静态的成员时,那对象就必须存在。
静态代码块
1、格式:
{
System.out.print(“我是静态代码块”)
}
2、特点:随着类的加载而执行,并且只会执行一次,并且优先于主函数
3、作用:用于给类进行初始化
对象初始化过程
示例:
Class Student{
Static{
System.out.println(“我是静态代码块”);
}
{
System.out.println(“我是构造代码块”);
}
void print(){
System.out.println(“我是普通方法”);
}
private String name=”小贝”;
Private static String country;
}
Public class Stu{
public static void main(String[] args){
Student S=new Student();
}
}
1、因为new Student()用到了Student类,所以会把它从硬盘上加载进入内存
2、如果有static静态代码块就会随着类的加载而被执行,还有静态成员和普通方法也会随着类的加载而被加载
3、在堆中开辟空间,分配内存地址
4、在堆中建立对象特有属性,并同时对特有属性进行默认初始化
5、对属性进行显示初始化
6、执行构造代码块,对所有对象进行初始化
7、执行对应的构造函数,对对象进行初始化
8、将内存地址给S(也就是给栈中的变量)
Java23种设计模式
设计模式:针对此类问题最有效的解决方法
单例设计模式:解决一个类中只能在内存中存在一个对象
如何让一个类在内存中只存在一个对象呢?
1、禁止其他的应用程序通过此类来创建对象(将默认构造方法私有化)
2、既然外部不能通过此类创建对象了,我们要用对象就可以在本类里面创建本类对象
3、为了其他应用程序能够访问到本类里面创建的对象,我需要对外界提供一种访问方式
如何用代码体现出来:
1、私有化构造方法
2、在本类中创建本类对象
3、对外界提供访问的方法
4、示例代码:
class Person{ String name;
private Person{
}
static Person p=new Person();
public static Person getInstance(){
Return p;
}
}
public class Per{
public static void main(String[] args){
Person A=Person.getInstance();
=”小明”;
Person B=Person.getInstance();
System.out.println();
/*
这里new了两个对象,并调用了getInstamce()方法,由于getInstamce()方法是被static修饰的,且静态代码块只会执行一次,所以两个对象调用的getInstamce()方法返回的都是同一个内存地址,那么当A对象对对象特有属性进行修改后,B对象的特有属性也会被修改
*/
}
}
继承 extends
继承的概述_1:
1、提高了代码的复用性,简化了代码
2、让类与类之间产生了继承关系,才有了后面的多态特性的存在
注意:千万不要为了获取其他类的功能简化代码而建立继承关系,必须要类与类之间存在继承关系
继承关系:is a
被继承的称为:父类,超类,基类
继承的称为:子类
继承概述_2:
1、子类拥有父类的成员,子类不能拥有父类中被private修饰后的成员
2、Java多层继承:在多层继承中最下层子类拥有整个继承体系的成员,最上层的父类里面定义了所有子类的共性描述
3、Java中不支持多继承(c++语言中支持),只支持单继承。因为多继承存在安全隐患,当多个父类中定义了相同的成员,子类对象不确定运行哪一个。但Java中保留了这种机制,并用了另一种方式来体现 多实现(通过接口来实现)
父类中的成员
成员:
1、成员变量 2、函数 3、构造函数
变量:
1、this代表当前对象的引用,this.变量 首先在本类中找所需要的这个变量,如果没有找到再到父类中找
2、super 用于访问当前对象的父类成员,super.变量 直接在父类中找所需变量
子父类中的函数:
当子类中出现和父类中一样的函数时,子类对象调用该函数,运行的是子类中的函数,如同父类中的函数被覆盖了