湖南营销型网站建设报价,永久免费域名申请教程,建筑行业平台,长沙现在可以自由进出吗基础知识
类作为成员变量类型#xff1a;
接口作为成员变量类型#xff1a;
接口作为方法的参数或者返回值
Object类#xff1a;
java.lang.object
类object是类层次结构的超#xff08;根#xff09;类 每个类都是用object作为父类
所有对象包括数组都实现这个类的…基础知识
类作为成员变量类型
接口作为成员变量类型
接口作为方法的参数或者返回值
Object类
java.lang.object
类object是类层次结构的超根类 每个类都是用object作为父类
所有对象包括数组都实现这个类的方法
toString : 打印字符串的相关属性没有重写该方法的话打印的是对象的地址值否则打印的即字符串的相关属性即重写了tostring方法
Equals方法
基本类型数据比较的是值
引用类型数据比较的是地址值
因为equals方法比较的是两个对象的地址值所以没有太大意义故而需要对这方法进行重写 Idea工具的快捷键以及一些简单的设置
字体file——》settings-font
背景颜色调节
快捷键删除一行ctrlY
退出任何窗口都可以使用esc键
任何新增新建的快捷键altinsert
窗口变大变小ctrlshiftF12
Alt左右箭头切换class文件
运行ctrlshiftF10
提示方法的参数CTRLP Final修饰的类无法被继承
final修饰的方法不能被覆盖重写
final修饰的局部变量只能被赋值一次
final修饰的引用一旦指向某个对象就不能再指向其他对象但该引用指向的对象内部的数据可以被改变
final修饰的实例变量在定义时就需要手动赋值或者在系统赋值之前为其赋值即编写过程中的赋值要早于系统默认赋值即早于系统给的无参构造方法赋值之前
Final修饰的实例变量一般会和static联合使用成为常量
Public static final string COUNTRY_NAME“中国” 抽象类 抽象类定义抽象类是把类之间具有的共同特征提取出来形成的抽象类是无法创建对象的即无法实例化需要实现类来继承对该类进行实现抽象类也属于引用数据类型抽象类的定义
修饰符列表 abstract class 类名{
类 体
}
abstract和final两个是对立的不能同时使用抽象类的子类可以是抽象类也可以是实现类抽象类虽然本身无法进行实例化但是含有构造方法供子类进行创建对象使用抽象类关联到一个概念抽象方法。
抽象方法表示没有实现的方法没有方法体的方法定义格式如
Public abstract void doSome();
抽象方法额特点是
没有方法体以分号结尾前面的修饰符列表中有abstract关键字
抽象类中不一定有抽象方法但是抽象方法一定在抽象类中一个非抽象类继承抽象类必须将抽象类中的抽象方法进行覆盖/重写/实现. 面相抽象编程
调用A.XXXA是抽象类的面向抽象编程不要面向具体编程降低程序的耦合度提尕程序的扩展力这样的编程思想符合OCP原则 接口
一、基础语法
接口也是一种引用数据类型编译之后也是.class文件接口也是完全抽象的。抽象类是半抽象或者也可以说接口是一种特殊的抽象类接口的定义方式
【修饰符列表】interface 接口名{}
接口支持单继承也支持多继承接口中只包含两部分内容一部分是常量一部分是抽象方法接口中所有的元素的都是public修饰的即都是公开的接口中的抽象方法定义时public abstract修饰符可以省略接口中的方法都是抽象方法所以接口中的方法不能有方法体即没有“{}”接口中定义常量时可以省略public abstract final但是常量值不能被修改。当一个非抽象的类实现接口时必须将接口中的所有方法都重写实现、覆盖接口和接口之间恶意实现多继承一个类亦可以实现多个接口弥补了java中类与类之间的单继承缺陷Extends和implement可以共存extends在前implement在后使用接口在编程过程中可以使用多态 类和类之间叫做继承类和接口之间叫做实现
继承使用关键字extends完成
实现使用关键字implement完成
接口中的方法都是公共的
接口和接口之间进行强制类型转换的时候没有继承也可以进行强转但是运行时可能会出现ClassCastException异常 接口在开发过程中的作用
接口在开发中的作用类似于多态的作用。多态面向抽象进行编程不要面向具体编程。降低程序额的耦合度提高程序的扩展力符合OCP开发原则接口的使用离不开多态机制接口可以解耦合任何一个接口都有调用者和实现者接口可以将调用者和实现者解耦合调用者面向接口调用实现者面向接口编写实现 类和类之间的关系
1、Is a、has a 、like a
2、Is a 表示继承
3、Has a表示关联关系属性形式存在
4、Like a表示实现关系类实现接口 抽象类和接口有什么区别
1、抽象类是半抽象的接口是完全抽象的
2、抽象类中有构造方法接口中没有构造方法
3、接口和接口之间能支持多继承类和类之间只能实现单继承
4、一个类可以实现多个接口一个抽象类只能继承一个类单继承
5、接口中只允许出现常量和抽象方法
关于java语言中的package和import机制
Package是java中的包机制作用是为了方便程序的管理不同功能的分别存放在不同的包下Package是一个关键字后面家包名包名的命名规范一般是采用公司域名倒叙的方式 Object类中的几个主要的方法
Protected Object clone() //负责对象克隆的
Int hashCode() //获取对象哈希值的方法
boolean equals(Object obj) //判断两个对象是否相等
String toString() //将对象转换成字符串的形式
Protected void finalize() //垃圾回收器负责调用的方法
1、String toString() //将对象转换成字符串的形式
public String toString(){getClass().getName() Integer.toHexString(hashCode())}
//重写toString()方法之后年月日方才会以日期的形式显示否则输出的是Demo05.myTime14ae5a5即myTime地址值public String toString(){return this.year年this.month月this.day日;}
boolean equals(Object obj) //判断两个对象是否相等
public boolean equals(Object obj){Return (thisobj);
} Obj中的“”比较的是两个量的地址值 //实际上String也是一个类不属于基本引用类型并且String类有其本身的构造方法 String类已经重写了equals方法和toString方法所以比较两个字符串不能使用“”必须使用“equals”即equals方法是通用的 重写equals方法时一定要重写彻底 finalize()方法
Protected void finalize() throws Throwsble{}
此方法是protected修饰的,此方法只有一个方法体内部没有代码而且这个方法是用protected修饰的该方法不需要程序员手动调用JVM的垃圾回收器负责调用此方法。
静态代码块在类加载时执行并且只执行一次。
Static{
........
} 4、Int hashCode() //获取对象哈希值的方法
在object中hashCode方法
Public native int hashCode();
这个方法不是抽象方法带有native关键字底层调用C程序调用之后会放回一个哈希值
匿名内部类
内部类在类的内部定义了一个新的类
内部类分类三种
静态内部类类似于静态变量
实例内部类类似于实例变量
局部内部类类似于局部变量
class Test01{
//静态内部类
Static class Inner1{
}
//实例内部类
class Inner2{
}
Public void doSome(){
Int i100
//局部内部类
class inner3
} } 数组
数组的优点和缺点
第一空间存储上内存地址是连续的。
第二每个元素占用的空间大小相同。
第三知道首元素的内存地址。
第四通过下标可以计算出偏移量。
通过一个数学表达式就可以快速计算出某个下表位置上元素的内存地址。
直接通过内存地址定位效率高
优点检索效率高
缺点随机增删效率非常低数组无法存储大量的数据
注意数组的最后一个元素的增删效率不受影响。
一维数组的静态初始化和动态初始化
静态初始化
Int 【】 a{1,2,3,4};
Object[] objs{new Object(),new Object(),new Object()};
动态初始化
int [] anew int [5];//5个长度的数组每个元素的默认值都是0
Object[] objsnew Object[4];//4个长度每个元素的默认值都是null
一维数组的遍历
Int a[]new int[4];for (int i 0; i a.length; i) {System.out.println(a[i]);}
二维数组的静态和动态初始化
静态初始化;
int [][] a{{100,200,4,300},{1,2,6,4},{4,5,68,9}};
动态初始化
int[][] a new int[3][4];//动态初始化数组
Int[][] anew int[3][4];
二维数组的遍历
int[][] a new int[3][4];for (int i 0; i a.length; i) {for (int j 0; j a[i].length; j) {System.out.println(a[i][j]);}System.out.println();}
数组的扩容; 关于java中数组的扩容* 在java中数组的长度一旦确定就不可变当数组满了的时候需要扩容* java中数组的扩容是* 先创建一个更大容量的数组然后将原来数组内的所有数据进行全部拷贝* 数组的扩容效率较低设计拷贝问题,拷贝方法 System.arraycopy();* */
public class ArrayTest07 {public static void main(String[] args) {int [] src{1,11,2,3,4};int[] destnew int [8];//数组的扩容方法System.arraycopy(src,0,dest,1,src.length);//遍历目标数组for (int i 0; i dest.length ; i) {System.out.println(dest[i]);}}} 数组常见的算法
7.1排序算法
冒泡排序算法
选择排序算法
查找算法
二分法查找
7.2、算法实际上在java中已经封装好了如果需要排序只调用方法就行。例如java中提供了一个数组的工具类
Java.util.Arrays
Arrays是一个工具类
其中有一个sort方法可以排序。静态方法直接使用类名调用就行。 7.3、选择排序
选择排序比冒泡排序的效率高。
高在交换位置的次数上。
选择排序的交换位置是有意义的。 循环一次然后找出参加比较的这堆数据中最小的拿着这个最小的数据和前面的数据进行交换位置。 枚举
枚举是一种引用数据类型枚举类型的定义语法
enum 枚举类型名称{ 枚举值1枚举值2····
}
结果只有两种情况的建议使用布尔类型。结果超过两种并且还可以一种一种列举出来的建议使用枚举类型。
异常
异常在java中是以类的形式存在的可以创建对象
Final\finally\finalize:
Final关键字修饰的变量无法重新赋值、修饰的方法不能被覆盖、修饰的类不能被继承
Finally关键字与try联合使用finally中的语句一定要执行
Finalize:标识符是一个OBject类中的一个方法名由GC垃圾回收器负责调用。
经典异常空指针异常NullPointerException类型转换异常ClasscastException数组下标越界异常ArrayIndexOutOfBoundsException数字格式化异常NumberFormatException
总结异常中的关键字
异常捕捉try\catch\finally
Throws:在方法声明的位置上使用表示上报异常信息给调用者
Throw: 手动抛出异常
集合
数组实际上是一种集合是一种数据的容器。可以一次容纳多个对象集合不能直接存储基本数据类型也不能直接存储java对象当中存储的是java对象的地址即存储的是引用数据类型。集合也可以是一个对象也有内存地址。在java中每一个不同的集合底层会对应不同的数据结构网不通的集合中存储元素等于将数据放到了不同的数据结构当中。集合在java.util包下所有的接口和类在java中结合分为两大类
一类是单个方式存储元素这一类集合中超级父接口java.util.Collection
一类是以键值对的方式进行存储元素这一类集合中超级父接口java.util.Map 集合中的重要内容
主要的集合类
Arraylist
Linkedlist
HashSet
HashMap
TreeMap
TreeSet
Properties
集合的创建向集合中添加元素取出集合中的元素集合的遍历 IO流
什么是IO I:Input Ooutput
IO流的分类 一种是按照流的方向进行分类; 以内存作为参照物 往内存中去问叫做输入Input