javaSE基础篇二

1.1.1文档注释


    是一种功能级注释,可根据javadoc命令生成说明文档(类似Java的jdk说明文档),用来说明一个类,一个方法或者常量,方便提高代码的可读性。
package api;

/**
 * 文档注释是功能级注释,用来说明一个类,一个方法或一个常量的,因此只在上述三个地方使用。
 * 文档注释可以使用java自带的命令javadoc来对这个类生成手册。
 *
 * 在类上使用时用来说明当前类的整体功能。

 * @author FAN
 */
public class dd.Demo {
    /**
     * sayHello中使用的问候语
     */
    public static final String INFO = "Hello!";

    /**
     * 为给定的用户添加一个问候语
     * @param name 指定的用户的名字
     * @return  返回了含有问候语的字符串
     */
    public String sayHello(String name){
        return "Hello!"+ name;
    }
}


1.1.2Object类


    Object类是类层次结构的根。每个类都有 Object作为超类。所有对象,包括数组,实现这个类的方法,其中包含了equals(),hashCode(),wait(),notify(),notifyAll(),toString()方法。 


1.1.3Srting类


    String表示一个字符串,直接继承于java.lang.Object类,内部维护了一个可变的长的char数组,自身被final过了,通常赋值方式为字面量创建,二是new String(),第一种方式声明的方式会现在堆内存中的字符串常量池中寻找是否存在该对象,如果存在就会返回该对象的地址给变量,不存在就会在字符串常量池中创建该对象,以此达到String类对象的重用的目的,直接new String()的String对象不会出现在字符串常量池中,因此推荐字面量赋值创建对象。对于引用类型==比较的是地址,equals()采用的是默认比较方法,系统的类采用的都是已重写好的equals()方法,比较的内容,而自建对象需要重写equals()才能实现想要的效果,否则默认比较地址。          提供的方法:length(),indexOf(char),charAt(int idx),equals(Obj),compareTo(Obj),maches(),subString(),endsWith(),startsWith(),valueOf()等其他方法。


1.1.4StringBulider和StringBuffer


    因为String的修改性能很差,于是就产生了StringBuffer和StringBuilder类来解决这个问题,特点:修改效率高。两者差别,Buffer线程安全,Builder线程不安全。
    提供的方法:append(),replace(),insert(),reverse(),delete()等方法。


1.1.5正则表达式


    用来进行逻辑判断的好东西。
    语法规则:
        谓词 [abc]-匹配abc中任意字符,(abc)匹配abc字符,某字符直接出现则直接匹配它,.任意字符。\w 匹配0-9_a-zA-Z任意字符
        量词,?0-1 *0-多,+1-多 {a,}a次以上,{a,b}a以上b以下。

 

1.1.6包装类


    产生:想让基本类型参与到面向对象编程的过程。
byte Byte   char  Character short Short int Integer  long Long   float Float   double Double
boolean Boolean。同一方法:包装类名.valueof(a),将a类型转化为该包装类。.MAX_VALUE,.MIN_VALUE,获取其最大值和最小值,包装实例.类型名Value(),将该包装类的值以某种类型返回。Integer采用类似String 的常量池,在一定范围(默认为-128 - 127)重用对象,可进行手动设置(根据业务逻辑设置)。
其中数字类型的包装类都继承自java.lang.Number,而char和boolean的包装类直接继承自Object
Number是一个抽象类,定义了一些方法,目的是让包装类可以将其表示的基本类型转换为其他数字类型.
    自动拆装箱特性:
该特性是编译器认可的.当编译器编译源代码时发现有基本类型和引用类型相互赋值使用时会自动补充代码来完成他们的转换工作,这个过程称为自动拆装箱。JDK5推出了自动拆装箱功能,当基本类型采用赋值方式转化为对应包装类,会触发装箱,当需要计算表达式时就会拆箱为基本数据类型参与运算。


1.1.7集合API


    java.util.Collection<>为所有集合类的顶级接口,Collection下面有很多实现类。
Collections.sort(),Collections直接继承自java.lang.Object类。这个类只包含操作或返回集合的静态方法。它包含多态算法操作的集合,“包装”,它返回一个按指定的集合支持的新的集合,和其他一些零碎的东西。
Collection类 在集层次结构根接口。一个集合代表一组对象,被称为元素。一些集合允许重复的元素,而其他的则不允许。有些是有序和无序的人。JDK没有提供这个接口的任何直接的实现:它提供更具体的子接口像 Set和 List实现。此接口通常用于通过收集和操纵他们最大的共性是理想。常用方法: add,remove,addAll,containsAll,removeAll。集合的遍历采用是iterator(迭代器)遍历 和.foreach()实现accept接口来遍历元素,迭代器和foreach不能通过集合的增删方式操作元素。
JDK5 推出增加版for(数据类型 i : 集合名或数组),若是集合编译器会将其迭代器模式,数组就会平常的遍历,JVM并不认。

while(it.hasNext()){
            String str = (String)it.next();
            System.out.println(str);         
        }


List<>  linkedList<>,ArrayList<>,区别 单链表实现和类数组实现,可重复集合。
Set<>  不可重复集合,HashSet<>哈希存储
Map<> HashMap<> TreeMap<>,键值对,哈希存储方式和树存储方式。
集合和数组的转换:
List<数组> Arrays.asList(数组名), Object[] 集合名.toArray(),其中数组转化为集合后,对集合的操作会影响数组,对数组的操作也会影响集合(原因:数组存储元素地址,集合和数组指向同一片地址空间)。而将集合转化为数组后,两者互不影响(原因:)。
集合的排序:
    Collections.sort(),默认采用从小到大排序,Collections.sort(comparator cp) 传入比较器来排序,还有一种方法是重写Comparable 接口,为了保证低侵入性,就应该使用创建比较器的比较。

1.1.8泛型


    Jdk5推出泛型的功能,为了解决想要表达一个它既是这也是那的概念,给出一个抽象的概念,使得程序变得更加丰富。<?> 中间放得是代表,直接将它将当成数据类型来用就行,根据传入得参数来决定它到底是什么类型。泛型也称为参数化类型,允许我们在使用一个类时指定它当中属性,方法参数或返回值的类型.
泛型在集合中被广泛使用,用来指定集合中的元素类型.有泛型支持的类在使用时若不指定泛型的具体类型则默认为原型Object。
1.1.9Lambda
Lambda表达式-JDK8之后推出的新特性
语法:
(参数列表)->{
    方法体
}
当使用匿名内部类创建时,如果实现的接口只有一个抽象方法,则可以使用lambda表达
式代替,使代码更简洁优雅。
在java中可以使用lambda表达式代替匿名内部类创建所需要实现的接口时,该接口上都有一个注解:@FunctionalInterface。


1.2.1File类


    文件类,负责获取文件的属性信息,增删文件,不能获取文件存储的信息(得利用java.io)。File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)
使用File可以做到:
1:访问其表示的文件或目录的属性信息,例如:名字,大小,修改时间等等
2:创建和删除文件或目录
3:访问一个目录中的子项
但是File不能访问文件数据.
方法:
NewFile(Stringurl),getName(),length(),canRead(),canWriter(),existes(),createNewFile(),delete,mkdir,mkdirs,list[],File[] listFiles(FileFilter)。

1.2.2java.io输入输出流


流类似于河流,流过去就不会再回来了,就好像人生不可回头,只能朝前走。"流可以按功能分为低级流和高级流。低级流负责直接对数据进行操作,类似于原材料的流动,而高级流负责对数据进行加工处理,类似于工厂中的加工机器。高级流通常是建立在低级流之上的,实现数据加工的过程。
另一方面,流的读取方式可分为字节流和字符流。字符流一般被认为是高级流,因为数据最终存储为二进制字节数组。这种存储方式是由于计算机硬件设计的特性所决定的,计算机处理数据的基本单元是二进制的,这是由电子设备的工作原理决定的。CPU、内存和硬盘等设备都是以二进制数据为基础进行操作和存储的。硬盘利用磁盘来模拟二进制数据的存储,而内存则作为临时存储区域,用于加快数据的访问速度。为了提高数据的读取速度,计算机采用了缓存机制,即在内存中设置一个缓冲队列,用于存储需要频繁访问的数据。同时,多进程和多线程的技术被用于充分调度CPU的资源,以实现对数据的快速处理和操作。这些技术的应用使得现代电脑和手机能够更加高效地运行和处理数据。"


字节流


java.io.InputStream  java.io.OutputStream 
字节流的顶级接口类(继承java.lang.Object类),int read() 返回低八位值-1到255(原因,以字节存储方式),int read(byte[] bytes)读取一段字节数组,返回读取个数,可采用循环一直读,再根据设置或信息主动或被动输入或输出结束,-1都表示读取结束。 close()关闭。OutputStream有flush(),write(),write(byte[] bytes)字节数组。
java.io.FileInputStream  java.io.FileOutputStream 输入输出文件流。无新增方法,
java.io.BufferedInputStream java.io.BufferedOutputStream 
内部默认采用1024长的byte[],将数据进行处理,读数据就直接将1024个数据全部读过来,等到程序从该文件流中读取过了1024长的字节,就会再读一次,以此类推。对于输出,则会等到数据装填满才会提交过去。因为产生了数据丢失或数据同步更新问题,采用flush(),可直接将数据输出过去,建议所有流都加上StandartCharset.UTF-8的限制,保证读写的编码和解码的正确性,调用所有的关闭方法都会自动flush(),flush()具有传递作用。


对象流


java.io.ObjectInputStream  java.io.ObjectOutputStream 
专门用来读取对象的流,对象流,readUTF(),以UTF-8形式读取字符串。writeUTF(),以UTF-8形式写出字符串。实现InputStream,Objectinput接口,写入和写出的对象必须进行序列化和反序列化的操作,readObject(),writeObject()。

 字符流


超类        java.io.Reader,java.io.Writer 抽象类
转换流    InputStreamReader, OutputStreamWriter,
由字节流转换为字符流的枢纽类,该读写类就是一个转换后的字符流的类。
BufferedReader,BufferedWriter  
PrintWriter.  类上,不再赘述。
1d9ed9e673bd41dea7bea7660ab5595d.png

 

  • 16
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jdsdyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值