学java的第一个星期(java基础)

这是是我自己的学习记录,主要是记录自己不熟的知识点,或者大框架整理一下知识点

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++基础,现在学到这里了,进行一个简单的笔记记录,和知识点回顾,方便后面继续学习。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值