1.对象数组通常是以引用数据类型为主的定义,例如lei
1.对象数组通常是以引用数据类型为主的定义,例如lei
Garbage Collection 才对
1.在开发过程中,如果要判断用户输入的字符串是否等同与指定的字符串,那么一定要将字符串写在前面。
1.采用直接赋值的模式进行String类对象的实例化操作,则该实例化对象(字符串内容)将自动保存在Java中的对象池中。下次创建对象是采用直接赋值的方式创建相同的字符串,则不会new新的东西,直接调用对象池中的对象。
2.使用构造方法创建字符串,则会产生垃圾空间,实际上也会对字符串共享产生一定的问题。
3.public String intern()方法可以实现将new出来的字符串常量放入共享池中。
抽象abstract
抽象类中包括抽象方法,不可以实例化
1.抽象类必须要有子类(内部可能已经提供了子类)
2.抽象类的子类必须覆写抽象类中的全部抽象方法(方法覆写一定要考虑到权限public)
3.抽象类的对象可以通过对象的多态性实现
JAVA 多态性的体现
方法的多态性
-Overload
同一个类中可以有多个相同方法名的方法,它们的参数列表各不相同(参数类型 参数个数 参数顺序)与返回值无关、修饰符无关。
-Override
在子类中可以存在与父类的某个方法名一致的方法,它们的参数列表相同 参数类型兼容 方法修饰符范围必须大于父类的,不可以抛出比父类更多的异常,可以抛出运行时异常。返回值可以是父类返回值的子类。
对象的多态性(前提:方法覆写)
【自动】对象向上转型
父类 父类对象 = 子类实列
【强制】对象的向下转型
子类 子类对象 = (子类)父类实列
private int age;
public void setAge(int n){
if(n>=0&&n<=150){
age=n;
}else{
age=0;
}
}
public int getAge(){
return age;
}
类的设计原则:
类中的所有属性必须使用private封装
private只允许本类访问,而不允许外部访问。
1.数组的静态初始化,即数组在创建的同时进行赋值:完整格式:
数据类型 数组名称 []=new 数据类型[] {};
OOA
OOD
OOP
封装
继承
多态
面向对象
面向过程
1.二维数组的动态初始化:数据类型 对象数组 [][] = new 数据类型[行个数][列个数];
2.二维数组的静态初始化: 数据类型 对象数组 [][] = new 数据类型[][] {{值,值。。}};
对象内存分析
1. new表示开辟新的内存空间
2.两个内存空间
堆内存空间:保存真正的数据,保存的是对象的属性信息
栈内存空间:保存的堆内存的地址,堆内存操作权,保存的是对象的名称
3.引用的本质是别名,只不过这个别名放在了另一个栈内存之中,即一个堆内存可以被多个栈内存所指向
4.垃圾内存空间指的是没有任何栈内存指向的堆内存空间,所有的垃圾空间将不定期被Java中的垃圾收集器(GC,Garbage Collector)进行回收以实现内存空间的释放,不过从实际开发来讲,虽然java提供有gc,但gc也会造成程序性能的下降,所以开发过程中一定要控制好对象的产生数量,即无用的对象应尽量少产生。
5.匿名对象不会有任何的栈空间所指向,所以使用一次后变成为垃圾空间
匿名对象:Person("Mike",20).info()
Java类开发要求
1.类名称必须明确的描述出某一类事务,如Member、Dog
2.类的属性必须用private封装,所有的属性必须按照要求提供有setter、getter方法
3.类中可以定义多个构造方法,但必须保留一个无参构造方法
4.类中的所有方法都不允许出现任何的System.out语句,所有的输出必须交给调用处完成
5.类中应该提供有一个返回类完整信息的方法,这个方法名称暂时为getInfo()
OOA(面向对象分析)OOD(面向对象设计)OOP(面向对象编程)
类是一个共性的概念,对象指的是一个个具体的事物
在开发过程中首先产生类,而后才可以产生对象。
类中的组成:方法(操作的行为)、属性(变量,描述每一个对象的特点)
class类定义的语法:
class类名称{
属性;
属性;
方法(){
}
}
类名称每个单词首字母要求大写,类中的每一个方法的代码尽量不要特别长
类定义完成之后是不能直接去使用的,如果要使用,必须产生对象,产生对象的方法:
1、声明并实例化对象:类名称 对象名称=new 类名称();
2、分布进行对象实例化:
1.声明对象:类名称 对象名称=null
2.实例化对象:对象名称=new 类名称()
1.字符串常量是不可更改的,可以更改的是对象对象对字符串的引用,但是这样会产生很多垃圾,造成内存浪费。
堆内存空间:保存真正的数据,保存对象的属性信息;
栈内存空间:保存堆内存的地址,堆内存的操作权,可以简化理解为保存的是对象名称
new表示开辟新的堆内存空间,内存地址被栈保存着
一个栈只能存一个地址
只有引用数据类型会产生NullPointerExpection错误,以后出现了就根据错误的位置观察是否实例化
引用传递的本质是别名,别名存在栈内存中,一块堆内存可以被多个栈内存指向
没有任何栈内存指向的堆内存空间叫做垃圾空间。
GC(垃圾收集器)收集垃圾空间
1.在String类中compareTo()方法是一个最为重要的操作方法,其返回值为Int类型。
(1)相等,返回0;
(2)小于:返回的内容小于0;
(3)大于:返回的内容大于0
1.public boolean contains(String s) 判断一个子字符串是否存在。
public int indexOf(String str)从头开始查找字符串的位置,若存在则返回索引处,否则返回-1.
public int indexOf(String str,
int fromIndex)从指定位置查找子字符串的位置。
public int lastIndexOf(String str)从字符串的末尾向前查找指定字符串的位置。
public boolean startsWith(String prefix)判断是否以指定的字符串开头。
public boolean startsWith(String prefix,int toffset)判断指定位置是否以指定字符串开头。
public boolean endsWith(String suffix)判断是否以指定字符串结尾.
2.一般查找字符串都建议使用contains()方法完成。
3.indexOf只能查找指定字符串第一次出现的位置。