java se 86_JavaSE基础

1.方法就是函数,方法不能嵌套定义;要定义在类当中;

2.当返回值为void时,可以在方法结尾直接写return;也

可不写,系统默认填上return.

3.方法重载的定义:在同一个类中的多个方法,他们的方法名相同

参数列表不同,称为方法重载。方法重载与返回值类型无关。

4.数组的初始化有动态初始化和静态初始化。

动态初始化:只指定长度,有系统给出默认值。

静态初始化:给出初始化值,又系统决定数组长度。

5.用 int[]arr=new int{}创建数组,然后再 int[]arr2=arr;

这时两个数组名引用一个内存;

6.数组使用常见问题:

1)数组索引越界异常:ArrayIndexOutOfBoundsException

也就是访问了不存在的索引。

2)空指针异常:NullPointException方法

数组名存的是null,而不是数组的地址

7.数组属于引用类型,引用类型的变量作为参数传递给方法时,

传递的是地址值;基本类型的变量作为参数传递给方法时传的是值;

8.成员变量:类中,方法体外;局部变量:方法的参数列表或者方法体语句。

Java中使用变量遵循“就近原则”,如果局部位置没有,就去成员位置找,

还没有系统就报错;(但是在继承中,子类可以去父类中找)

9.自定义类属于引用类型,在作为方法形参时传递的是地址值。

10.成员变量与局部变量的五大区别。

11.public一般用于修饰方法;private一般修饰成员变量;

被public修饰,能被所有类调用;

被private修饰,只能在本类中使用;

12.this关键字:表示本类对象的引用,本质是一个对象。

特点:每个普通方法都有一个this,谁调用该方法,this就指向谁。

用法:this.属性名或this.方法名(参数);

13.this可用于成员变量和局部变量重名的情况。

14.构造方法的作用是初始化对象。构造方法没有返回值类型,

连void也不能写。只能 修饰符 方法名(参数){};

15.当你不写无参构造方法时,系统默认加上它;

16.arr sc=new arr();如果括号内啥都不写,则调用的是无参构造函数;

如果写了,则调用有参构造函数。

17.标准的Javabean类写法:

1)方法都是公共的

2)成员变量用private

3)有setxxx和getxxx方法;

4)有全参和无参构造方法;

18.子类只能继承父类的非私有成员(成员变量,成员方法);

19.Java中使用变量的规则:就近原则

1)先找局部变量

2)没有,再找本类中的成员变量

3)没有,再去父类中的成员变量找,

4)还没有,就报错。

20.当面对父类中的成员变量和子类的成员变量和局部变量相同时,

区分他们可以使用super和this;

super代表父类中的成员变量;

this代表子类中的成员变量;

21.继承中重名的方法:

1)父类功能不满足现状,需改进,用super.方法名调用父类

方法,再改进

2)父类方法已过时,重新定义,叫方法覆盖;

22.子父类的构造方法:

1)子类所有的构造方法的第一行都有一个默认的super()用

来访问父类的无参构造方法;

2)如果父类没有无参构造方法,可以通过super(参数)的形

式来访问父类的带参构造方法

23.四大权限修饰符的修饰范围从小到大为:

private->默认(啥都不写)->protected->public

注意:子类的修饰符范围不能小于父类。

24.private:强调的是给自己使用

默认:强调的是给同包下的使用

protected:强调的是给子类使用

public:强调的是给大家使用

25.Java中实现多态的三大步骤:

1)要有继承(或者实现)关系

2)要有方法重写

3)要有父类引用指向子类对象;

26.多态中调用成员方法是编译看左(左边类型有没有这个成员)

运行看右(运行时看的是右边的成员);

27.多态的使用场景:父类型可以作为形参的数据类型,这样

可以接收任意的子类对象。

26.多态中成员变量不涉及重写。

再多态中使用成员变量遵循“编译看左,运行看左”;

Animal an=new Dog();

27.多态的弊端:父类引用不能使用子类的特有成员。

解决办法:类型转换

注意:1)只能在继承层次上进行转换,否则报ClassCastException异常

2)将父类对象转化成子类之前,使用instanceof关键字检查

28.instanceof关键字的用法:对象名 instanceof 数据类型

意思是判断前边的对象是否是后边的数据类型;

29.抽象方法只能定义在抽象类中,抽象类中可以没有抽象方法;

30.抽象类的子类:

1)普通子类:必须全部继承父类的方法

2)抽象子类:不需要继承;

31.抽象类中的成员比普通类多一种:抽象方法,其他的和普通类一样;

32.在实际开发中,子类一般有两个构造方法:

子类的无参构造方法访问父类的无参构造方法

子类的全参构造方法访问父类的全参构造方法;

33.final关键字:

1)修饰类,不能有子类,但能继承其他的类;

2)修饰方法:则该方法不能被重写;

3)修饰成员变量:如果修饰基本类型的变量,值不变;

如果修饰引用类型的变量,地址值

不变,属性值可以边(了解);

34.static关键字:能被本类所有对象共享;

任意对象能对其值进行改变,不安全,所以用final修饰

public final static String name="mmm";(公共的静态常量)

35.静态成员属于类;

36.static关键字修饰成员方法:变为静态方法,静态方法中没有对象this,

所以不能访问非静态成员。

引用:类名.成员对象

类名.成员方法(参数)

37.接口是一个比抽象类更抽象的类,所以不能直接实例化,要子类创建对象;

接口引用指向子类也是多态;(可以将接口理解为统一的标准,例如USB接口)

38.接口中的成员方法系统默认为public abstract,不写系统就会加上;

39.接口的定义为:interface 接口名{};与类定义相似;

40.接口特点:

1)接口不能实例化,要通过多态的方式实例化子类对象;

2)接口的子类可以是抽象类(不必继承接口的方法),可以是普通类

要继承接口的方法;

41.对于一个类来讲,他的父类(继承的关系)中定义的都是共性内容

他的父接口(实现的关系)中定义的是拓展内容

43.类与类之间是继承关系(extends),只能单继承,可以多重继承

类与接口是实现关系(implements),可以单,多实现;

接口与接口是继承关系,可以单,多继承;

44.接口中只有成员常量,因为所有的变量前都有默认的

public static final

45.接口中成员方法可以是jdk7抽象的,jdk8静态(static)和非静态(default)

的和jdk9私有的(private);

46.Java中三大工具:API(帮助文档),集合,IO流

47.Java中组件的层次关系:模块(module)->包(package)

->(类class或接口interface)

48.非静态方法的调用方式:对象名. 的方式调用;

静态方法的调用:类名. 的方式调用;

49.java.lang包下的类可以直接使用,不需要导包;Object类是它下面的类

50.一个类只有一个字节码文件;

地址值的组成:全类名(包名+类名)+@+该对象的哈希码的无符号十六进制形式;

51.Object类中的常见四大方法:

1)int hashCord()  //返回对象的哈希码值

2)Class getClass();//返回该调用者的字节码文件对象

3)String toString();//返回该对象的字节码表示形式;

4)boolean equals();//比较两对象的地址值,无意义,一般要子类重写;

52.在实际开发中,用的最多的方法是:

1)nextInt();接收整数;

2)nextLine();接收字符串  按回车结束;

3)hasNextXxx();判断作用,为boolean型;

4)nextXxx():用于接收下一个指定类型的数据

53.在实际开发中,String类很常用,所以优化它不在需要new;

54.在String类中:

1)static String valueOf();将指定的数据类型转换成字符串;

它是静态的,所以用类名.的形式调用;

55.API中的字段就是指成员变量;

56.一个毫秒值对应一个时间;

57.Data类:

1)Data()空参构造一个对象获取当前系统时间,精确到毫秒值;

2)Data(long)构造一个对象,获取指定时间;

58.Calendar类用于操作日期相关信息;

成员方法:

1)static Calendar getInstance();根据当前系统时区和

语言环境获取日历对象;

2)int get(int field);返回给定日历字段的值;

3)void set(int field,int value);将给定的日历字段

设置为指定的值;

59.基本类型对应的引用类型为包装类;每种基本类型都有对应的包装类,

注意int的包装类为Interger,char的包装类为Character;有装箱和拆箱

的概念,jdk5以后有自动拆装箱;

60.为啥使用包装类:可以将字符串数据转化成对应的基本类型;

61.包装类的成员方法:static 基本类型 parseXxx(String);

62.除了Character类无parseXxx方法外,其他包装类都有这个方法;

因为如果String想转化成char类型,可以用TocharArray()或charAt();

63.集合:简称集,是用来存储多个元素的容器

64.list,set,map都是接口,必须有实现类;

65.使用集合的步骤:

1)创建集合对象

2)创建元素对象

3)将元素对象添加到集合对象中

4)遍历集合

66,API中的E指泛型;

67.为什么需要增强for循环:简化书组合集合的遍历;

增强for的格式:for(元素的数据类型 变量名:要遍历的数组或集合对象){};

68.增强for的底层依赖的是迭代器(Iterator)

通俗讲增强for就是迭代器的简写形式;

69.集合有单列集合(Collection)Set,List和双列集合(Map)Map;

70.迭代器是遍历Collection集合的通用方式,可以再对集合便利的同时

进行删除和添加的操作,

71.迭代器的常用方法:

1)next():返回迭代的下一个元素

、        2)hasNext():如果任有元素,返回true

72.迭代器的使用步骤:

1)根据集合对象获取对象的迭代器对象

2)判断迭代器中是否有元素

3)如果有,就获取元素

String s=(String)list.next();

73.在使用迭代器时,可能会报并发修改异常(ConcurrentModificationException)

也就是在遍历的同时添加或删除元素;

74.列表迭代器则可以对集合遍历的同时添加或删除元素,但是必须通过

调用列表迭代器(ListIterator)的方法调用

75.泛型:泛指任意类型,常用于集合类中,他的好处在于类型安全,避免了类型转换。

76.List list=new ArrayList();表示list集合只能存放string类型的数据。

jdk7以后可以写成List list=new ArrayList<>();

77.Collections类是对集合进行操作的工具类。它里边的方法几乎为静态的,所以调用时用类名.的方式调用

78.Set集合的特点:不可重复和无序hashset集合中用哈希算法,当向Set中添加对象时,首先调用此对象所在类的hashCode()方法,

计算次对象的哈希值,此哈希值决定了此对象在Set中存放的位置;若此位置没有被存储对象则直接存储,若已有对象则通过对

象所在类的equals()比较两个对象是否相同,相同则不能被添加。

总思路:hashCode不同时,则必为不同对象。hashCode相同时,根据equlas()方法判断是否为同一对象。

在HashSet,HashMap,HashTable中都存在该问题。

79.为什么Set集合没有“去重”?

因为Set集合保证元素的唯一性依赖:equals()和hashCord()两个方法

你没有在子类中重写这两个方法,默认调用的是Object类中的,Object类中的equals()方法默认

比较的是地址值。

解决办法:在子类中从写这两个方法

80.Map集合是双列集合,元素由键值对构成,key可以重复,value不可以重复;

Mapmap=new HashMap<>();

81.向map集合中添加元素用put()方法,Map集合不能直接遍历,要用KeySet()方法拿到所有键的集合,这

样就将双列集合变成了单列集合

82.异常(Throwable)的分类:

1)异常(Exception):可以捕获的问题(通俗讲就是程序员产生的问题)

2)错误(Error):不可捕获的问题。

83.处理方式:

1)捕获,自己处理.   try(尝试代码)...catch(执行解决办法)

....finally(可省,写到这儿代码一定会执行,一般用来释放资源)

特点:程序处理完以后,继续执行

执行流程:先执行try里边的内容,有,则到catch里边,如果

没有,则跳到finally

2)抛出,交给调用者处理   throws

84.抛出异常:谁调用谁处理,main方法不想处理,可以继续抛给JVM处理

throws Exception

特点:异常抛出后,程序不在执行

85.I/O流简介:(input/output),是Java中用来传输数据的方式。

按流向分:

1)输入流:读数据

2)输出流:写数据

按操作分:

1)字节流:以字节为单位操作数据

1)InputStream :字节输入流的顶层抽象类

1)FileInputStream:普通的字节输入流

2)BufferedInputStream:高效的字节输入流

2)OutputStream:字节输出流的顶层抽象类

1)FileOutputStream:普通的字节输出流

2)BufferedOutputStream:高效的字节输出流

2)字符流:以字符为单位操作数据

1)Reader:字符输入流的顶层父类

1)FileReader:普通的字符输入流

2)BufferedReader:高效的字符输入流

2)Writer:字符输出流的顶层父类

1)FileWriter:普通的字符输出流

2)BufferedWriter:高效的字符输出流

86.File类是用来创建文件夹或文件的,说白了,就是处理路径

它里边的mkdir()方法可以创建单级或多级目录(make directory)

构造方法:

1)File(String pathname)

2)File(String parent,String child)

3)File(File parent,String child)

87.Java中路径的划分:

1)绝对路径:以盘符开头,是固定的路径

2)相对路径:相对于当前项目来讲的路径

88.File类的获取功能:list():获取指定目录下文件(夹)名称数组

listFile():获取指定目录下文件(夹)File数组

89.I/O流处理完后要释放资源,用close()方法关闭

90.IO流拷贝文件:

1:创建字符流输入对象,关联数据源文件,

2:创建字符流输出对象,关联目的地文件

3:定义变量,接收读取的内容

4:循环读取

5:释放资源

6:如果目的地文件不存在,系统自动生成;

91.字符流拷贝文件的标准代码:

1)BufferedReader br=new BufferedReader(new FileReader("路径"))

2)BufferedWriter br=new BufferedWriter(new FileWriter("路径"))

92.在缓冲输入输出流类中,ReadLine()为读取一行字符,如果没值了,换回null

NewLine()为Java提供的在任何平台使用的换行方法

93.字符流只能应用于纯文本文件,拷贝其他(音频,视频,图片等)用字节流

94.字节缓冲流的特点:即使你没有定义字符数组,它在下边也会以字符数组的形式来执行,也称为高效缓冲字节流

用法同上

95.反射:在Java中,反射指的是在程序运行期间根据类的字节码文件对象

来获取类中成员并使用的一项技术

什么是反射:在程序运行时分析类的一种能力

普通的程序先在后缀名以.java结尾的源文件中编写程序,然后编译成后缀名以.class结尾的字节码文件中,此时,就可以

通过对象名.的形式调用方法反射就是反过来

96.类加载器(ClassLoader):负责将类的字节码文件(.class文件)加载到内存中,并生成相应的Class文件

当你第一次使用类中的成员时,类加载器将此类的字节码文件加载到内存中,且只加载一次,如果在使用此

类成员,将不再加载

97.一个源文件(.java)对应一个字节码文件(.class)

98.获取Class对象的三种方式:

1)Object类下的getClass()方法

2)类的静态属性Class()

3)Class类的静态方法Class name=Class.forName(“类的正名”)

补充:类的正名:包名+类名

99.构造器对象(Constractor)

构造器类(Constractor)的常用方法有:

1)getConstractor():获取类的构造器对象

2)getName():获取构造器对象的所属类

3)NewInstance():通过构造器对象生成此类的一个对象

100.通过反射的方式获取构造器并使用的步骤:

1)先通过全类名获取该类对应的字节码文件对象,也就是Class

2)通过Class来获取该类的构造器对象

3)调用newInstance()方法获取该类的对象

4)打印结果

101.通过反射的方式获取成员方法并使用的步骤:

1)先通过全类名获取该类对应的字节码文件对象,也就是Class

2)通过Class对象来创建构造器对象,然后创建该类对象

3)通过Class来获取该类的成员方法(Method)对象,注意Method me=clazz1.getMethod("show2",int.class);

4)通过Method对象调用invoke()方法;

102.通过反射的方式获取成员属性并使用的步骤:

1)先通过全类名获取该类对应的字节码文件对象,也就是Class

2)通过Class对象来创建构造器对象,然后创建该类对象

3)通过Class来获取该类的成员变量对象(Field)

4)通过Field对象的Set()方法设置成员变量的值

注意:引用私有变量时,要调用setAccseeible()方法;

103.什么时候用父类,什么时候用接口?

是上下级的递推关系,针对某一块项目时用父类

面向各类项目时,用接口

104.Java中通过System.in和System.out对象分别和键盘与显示器产生关联而完成数据的输入和输出;

105.Java运行工具eclipse常用快捷键:F11是切换至调试模式,F6是断点逐句调试,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值