这是是我自己的学习记录,主要是记录自己不熟的知识点,或者大框架整理一下知识点
1、类:标准类制作过程:1)编写基本的成员变量
2)构造方法(无参构造,带参构造)
3)成员方法(成员变量设置方法,成员变量获取方法
2、String类常用的方法:1、chaArt(i):用来获取单个字符
2、构造方法可以直接将字符数组转换为字符串。
3、Stringbuilder的使用:方便字符串的操作,1)可以使用append(),添加数据,并返回对象本身2)reverse(),翻转字符串,并且返回对象本身
4、java面向对象的三大特点:
1)封装:成员变量是隐藏在内部的,外界无法进行操作的
2)继承,使用extends,
同一类中,public,private,默认,protected,都可以访问,同一个包的子类和无关类中,private无法被访问,不同包的子类,private和默认修饰符修饰的无法访问,不同包不同类,只有public修饰的可以被访问。
构造方法的访问特点:每一个子类构造方法第一句都为午餐构造方法,也就是说父类的无参构造方法先调用。可以使用super代表父类。
成员方法的访问特点:先看本类有没有,如果没有相关的成员方法,则使用父类的成员方法。
这里本类中继承父类的成员方法,但是又有其特色的功能,这里实现了方法的重写。
final修饰的变量,是无法被修改的,相当于常量
statci修饰的,静态成员方法,只能访问静态成员变量
3)多态:
前提条件:
1、有继承或者实现的关系
2、有方法的重写
3、有父类引用指向子类对象
指的是同一个对象,在不同的时候有不同的表现形式,例如猫可以是猫类,猫也可以是动物类,猫也可以是生物类,同一个对象在不同的时候就有了不同的表现形式,这是多态。
这里需要注意的是,编译看左边,执行看右边,什么意思呢,就比如Animal a = new cat();
比如说我们这个时候想要调用,a.eat(),编译的时候先去Animal中看是否有eat()方法,然后执行的时候,看cat类中是否有eat()方法的重写,如果有则执行cat()类中的方法而不是Animal中的方法.
抽象类:在类中,如果一个方法没有方法体,则这个方法是抽象方法,如果这个类中有抽象方法,则这个类是一个抽象类(需要注意的是抽象类中可以有非抽象方法),这里一般需要abstarct来修饰抽象方法和抽象类
接口:类实现接口使用implement。接口没有构造方法
抽象类和接口的去吧:1、成员区别:抽象类:变量,常量,构造方法,抽象方法,非抽象方法
接口:常量,抽象方法
内部类:主要是匿名内部类,可以减少类的创建,比如j.method(class c),统计的这里我们可以直接在括号里面new一个类出来,并且按照自己的需求,重写一下方法,即可实现,便利化。
包装类:这个没什么好说的,主要是使用基本数据类型的包装类,可以对数据进行更多的操作。
自动装箱,自动转化为包装类,自动拆箱,自动转化为基本数据类型
5、集合:
这里是很重要的,先说体系结构吧。
集合可以分为单列(collecton)和双列map,其中单列(collection)可以根据集合中的元素是否可以重复,分为list(可重复)和set(不可重复),list中比较常用的就是:ArrayList,Linkedlist
,这里需要注意,Arraylist是数组,因此他查询快,但是增删慢,而linkedlist是链表,增删快,但是查询慢
其中还有迭代器,迭代器是collection中的irerator()方法可以得到迭代器,迭代器中的方法,next()可以得到下一个元素,hashnext()可以判断是否还有多的元素,如此便可以遍历集合,还可以使用增强for进行遍历:for(数据类型 变量:数组/集合对象)
set中比较常用的是Hashset和treeset(这里可以如果不进行任何设置元素,可以进行自然排序,但是也可以设置排序器,使用new comparable(){}这里直接是匿名内部类,需要注意,如果是升序需要第一个参数减去第二个参数,可以这么理解(假设第一个参数小,则相减的负数,则此时将第一个参数放在前面,意味着小的放在上面,大的放在下面,即升序。)
泛型:通过泛型参数可以指定传入的对象类型,分为泛型类,泛型接口,泛型方法
Map主要是双列,包含了一个键值对。
6、IO流
io流中的类基本上冲四个类派生出来:inputstream/reader:字节输入流/字符输入流
outputstream/Writer:字节输出流/字符输出流
区分的方法:所以子类都是以父类的名称最为后缀的,看后缀即可分辨出是字符和字节流
先说字节输入/输出流:
常用的最多的时候Fileinpustream和Fileoutputstream
构造方法一般有两种:第一种 Fileinputstream(String name)
第二种 Fileinputstream(File file)
字节缓冲流:Bufferinputstream和Bufferoutputsream
构造方法:Bufferinputstream(inputstream in),因为Fileinpustream是inputstream的子类,所以常用BUfferinputstream(Fileinputstream in)。
这里其实是将字节流封装起来了。
再说字符输入/输出流:
常用的是InputstreamReader和IoutputstreamWriter,注意这里构造方法,字符输入流相当于是把字节流转换为了字符流,InputstreadmReader(inputstream in)由此可以看出,字符输出流同理
字符缓冲流为:BufferedWriter/BufferedReader。
这里,其实是把字符流疯转为了字符缓冲流,BufferedWriter(OutstreamWriter out)
其实可以简单的理解为:字节流->字符流->字符缓冲输入流
因此构造方法可以为字节流inputstream()/inputstream()->字符流InputstreamReader(inputstream in)->字符缓冲流 BufferedReader(inputstreamReader in)
下面的标准输入输出流,也可以这么理解,system.in可以用字节输入流接受,这样使用字符输入流转化字节流,然后再使用缓冲流来封装他最后就变成了
BufferedReader re = new BufferedReader(new InputstreamReader(System.in))
里面的InputstreamReader(System.in)这一步意味着将字节流转换为了字符流,由因为字符缓冲流需要字符流,所以new了一下
这里还有一点需要注意的:inputstream的构造方法无法去指定文件,所以利用多态使用其子类来实现。
所以如果要指定文件,就变成了
BufferedReader re = new BufferedReader (new InputstreamReader(new Fileinputstream("......");
标准输入流:这个可能会用到,这里一般这么定义
BufferedReader re = new BufferedReader(new InputstreamReader(System.in))这里注意里面使用的是字符输入流的对象。
这里注意如何把字节流转换为字符流,这里面的System.in其实就是字节流
查看中文文档可以知道使用InputstreamReader可以将字节流转换为字符流
InputstreamReader(new Inputstream());
而这里面的inputstream就是字节流.
序列化:用ObjectOutputstream或者ObiectInputstream。可以持久保持一个对象的信息
注意使用serivalVersionUid来保持文件不变。
这里还有Properties作为集合可以执行特定的操作
例如setproperties(String key,String value)可以直接设置键和键值
7、多线程到时候看java并发程序
8、网络编程:
1)udp发送的方法:1、创建socker对象(Datapramsocket)2、创建数据,进行打包,dataprapacket(byte []byte,int length,INtadress address,int pour),分别是数据包,长度,目的主机地址,端口号。3.调用soucket对象发送数据包
2)udp接受的方法:1、创建socker对象(Datapramsocker(int port)这里prot是端口号2、使用Dataprampakcet(byte 【】 byte,int length)3、调用socket对象接受数据,此时解析数据包,可以是getdata,这里取出的是字节数据,需要转化为字符串,可以使用String(byte【】 byte),可以自动转化成字符串。
有一些c/c++基础,现在学到这里了,进行一个简单的笔记记录,和知识点回顾,方便后面继续学习。