1、对象:(东西)
是客观存在的具体物体、具有明确的属性和行为。(属性——变量/行为——方法)//main方法
注:oop面向对象的编程
2、类(物以类聚)
1)是具有相同属性和行为的一组对象的集合。(类class)
2)类是对象的区别:类是泛型概念(即:模型) 对象是具体一物体
3)代码抽象的原则:
属性:(特征、特点)——变量
行为:(动作、方法)——方法
语法:访问修饰符 class 类名{
//成员变量//成员方法
}
方法必须写的四个特征:
返回值类型 、方法名、参数列表、方法体
public void main(String[] args){
//方法体
}
注:命名规范对类变量方法来说是同一套规则、其中类名必须大写开头 、开头变量方法名
必须小写开头、常量必须大写
3、构造器
1)目的:为了简化创建对象时的代码,所用的这个代码块、
2)分类:隐式构造器书写类的代码时 即使不写构造器但编译器依然会加上。
显示构造器书写代码时写上一个构造器(加上类特征相关变量)这样以后再用new创
建对象时书写起来就代码行数缩减了
3)语法:public 与类名一致的构造器名(参数列表){
//代码块:完成给类中的变量的赋值工作
}
注:构造器虽然和方法很像但是区别:
1、不需要标明返回值类型 2、名字必须与类一致 3、如果定义了显示构造器还必须把
隐式构造器写上否则隐式构造器就会被覆盖
4、面向对象编程语言的3个特点
1>封装
是指将某事物的属性和行为包装到对象中,这个对象只对外公布需要公开的属性
和行为,而这个公布也是可以有选择性的公布给其它对象。在java中能使用
private、protected、public三种修饰符或不用(即默认defalut)对外部对象访问
该对象的属性和行为进行限制。
注:封装:把复杂的内部结构装在一个壳子内,使用时不需要在考虑其结构,直接调用。
2>继承
是子对象可以继承父对象的属性和行为,亦即父对象拥有的属性和行为,其子对象也就拥有
了这些属性和行为。这非常类似大自然中的物种遗传。
3>多态性
是指允许不同类的对象对同一消息作出响应。比如同样的加法,把两个时间加在一起和把两
个整数加在一起肯定完全不同。又比如,同样的选择编辑-粘贴操作,在字处理程序和绘图
程序中有不同的效果。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽
象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
5、包(文件夹)
1)作用:方便分类,可以存放同名文件。
2)语法:打包 package 包名;
cmd密令: Javac 文件夹.java -d
使用包 import 包名;
注:包的命名规则和变量相同——如果想要包中的变量、方法、构造器被包外的其他类调用到、就必须加上public(公共的)
1、继承:(儿子继承父亲的特征)
语法 class 类名 extend 父类名{
例:DragenFather df = new DragenFather();
}
作用:简化代码 减少重复写代码
注:默认情况下成员变量/方法能被子类继承,但是构造器是不能被继承的。但 子类的对象可以传给父类
2、super和this
1)super调用父类中的变量/方法/构造器
语法:调用变量/方法,super.变量名/方法名() 调用构造器 super(参数列表)
2)this 调用本类中的变量/方法/构造器
语法:this.变量名/方法(参数列表) 调用变量/方法 this(参数列表) 调用构造器
区别:super在子类中调用父类/this调用本类
3、多态:(龙生九子各有不同)
表现就是子类中覆盖父类中的方法
4、方法的覆盖和重载
1)覆盖:子类中编写了和父类中声明方法一样的方法,就会产生覆盖效果
注:声明一样的方法是指修饰符的/返回值/方法名/参数列表一样。
2)重载:同一个类中编写了同名不同参
注:不同参指参数的个数/类型/顺序
区别:覆盖存在于子类和父类中 重载在于同一个类中
5、接口:定义了统一的规范,可以对接到不同类上。
注:统一的规范是指 方法。 接口不能实例化
语法声明接口
1)public interface 接口名{
//定义成员变量、定义成员方法 注意:方法不需要写方法体(不写实现)
}
2)实现接口
public class 类名 implements 接口名{
//实现接口里定义的方法(即 覆盖了接口中没有的方法体的)
}
注:一个类可以实现多个接口,像U盘可以插任意接口一样
即:上面接口的地方,还可以写多个接口、接口名1、接口名2、........
实现类的对象也可以传给接口类。
所以得成员方法:默认都是 public abstract 的(公共的/抽象的)
6、抽象类;如果想在接口中书写方法体是不允许的、要是有这种需要就要写成抽象类来弥补接口的不足。
语法:public abstract class 类名{
//可以写抽象方法(没有方法体)也可写普通方法
有方法体
}
区别:
1)接口:一个类可以实现多个接口
其中的成员方法都是没有方法体的(即 public abstract)
所以得成员方法:默认都会转成常量
2)抽象类: 一个类只能继承一个抽象类
其中的成员方法,按照你的功能需要定义成有方法体或没有方法体的(即 public abstract)
7、方法的修饰符:
1)abstract :抽象的 即:用在方法上可以不写方法体,交给其他人去实现。
2)final:最终的 即: 用在方法上 该方法不能被子类继承过去。覆盖
3)static : 静态的 即:程序被执行时现只需static的方法 而且只会被执行一次以节省内存。
即:用在成员变量前该量就是常量
用在类声明前面,被final修饰的类不能够被继承
8、访问修饰符:可以加在成员变量/成员方法/构造器前面/控制被调用的范围
1)public:公有的
2)protected:被子类使用的
3)default:默认的
4)private:私有的
9、常量的标准方法:
//静态的 最终的(值不能改变的)
public static final 数据类型 常量名=值;
例: public static fianl double PI=3.1415926;
注:常量名必须大写
优点:static的量和方法不需要实例化(new)就可以调用
10、Java基础包(最常用的包)
Java.lang 里面存放着Java常用的一些基础类:如string System
注:该包是JDK自动默认导入的,不需要我们去写。
Java.io 输入输出相关的类
Java.until 里面存放着很多工具类:扫描仪、日历类、处理时间类、生成随机数类。
11、包装类:
1)作用:常用来把键盘接受的字符串转换成基本数据类型(完成数据类型的转换 String类
型)
2)包装类与基本数据类型的关系
基本数据类型————包装数据类型
byte(字节) Byte
char(字符) Character
short(短整型) Short
int(整型) Integer
long(长整型) Long
float(浮点型) Float
double(双精度) Double
boolean(布尔型)Boolean
3)把String字符串转换成8种基本数据类型
包装类:parse 基本数据类型(字符串)
12、Object类:对象类
注:它是所有类的父类。
方法equals(),比较对象的值是否相等。应用数据类型/类类型产生对象
toString()、把对象转换成字符串
13、String类 字符串类,从内存原理角度讲字串值不能原始内存位置上修改,修改其值时/赋新值时,都要在新位置上开辟个空间再去存储。
(String类的值是不能修改的)
String str="Hellow world";
String str=new String("hellow world");
方法:equals() 比较字串的值是否相等
注:==只能用来比较基本数据类型 equals() 才能比较String数据类型值得
字串.length() 获取字符串的长度
字串.toLowerCase() 转换成小写
字串.toUpperCase() 转换成大写
字串.split('分隔符') 把字串按照指定字符进行分割返回的值是字串数组
字串.subString (开始下标 截取长度) 截取字符串
字串.lastIndexof(查找字符串) 从字符串中查找()里的字符串最后出现的下标。
字串.charAt(要查找的字符串所在的下标) 返回指定下标位置的‘字符’
字串.indexOf("要查找的字串") 从字符中查字符串()中的第一次出现位置
字串.replace (旧字符串,新字符) 替换字符
14、StringBuffer 类:字符串缓冲区,从内存原理角度讲能在原始的内存位置上可以修改值
注:在做内容海量 修改或添加时 StringBuffer 速度快、但String 速度慢
方法: sb.append("字符串") 向原有信息上添加新的字符串
15、StringBuilder 类:使用的语法与StringBuffer一样
区别:StringBuilder 效率更高(速度更快)
StringBuffer 线程更安全的(程序同时在控制不同机器人时,信息不会出现错识或者
乱码情况)
16、Math 类 处理数学问题的类 它里面所提供的方法都是静态的方法
方法 Math.round(double) 值 四舍五入
Math.random() 产生随机数
注:调用一个类的静态方法的语法是 类名.方法名(参数)
17、Runtime 类 : 用它可以运行控制台命令
方法:Runtime.getRuntime() 静态的方法.可以得到一个运行时Runtime对象
r.exec("控制台的命令") 非静态的方法,运行一条控制台的命令。
System类可以获得系统的一些参数信息
方法:都是静态的方法 直接调用 out.println();