JAVASE基础总结 summary

本文介绍了Java中字符串操作的常用类如String、StringBuffer和StringBuilder,探讨了基本类型包装类的转换与使用,以及文件操作、流的概念与网络Socket通信的基础。此外,还深入解析了进程与线程、集合(包括List、Set和Queue)的使用,以及并发安全的相关知识点。
摘要由CSDN通过智能技术生成

JAVASE

字符串

由字母、数字、下划线组成的一串字符。JavaApi中提供了3个类操作字符,常用的是String,还有StringBuffer与StringBuilder,对字符实现增、删、修改、查询、替换、索引等操作,具体操作需查看api帮助文档

包装类

1、包装类共包含8个,即基本类型转为的包装类。由于基本类型只保存在栈中,未保存在内存中,若需保存在内存中,则需将基本类型转换为包装类。包装分为转换与拆包

int a = 5;
Integer b = a;
system.out.print(b.value());
2、万物皆对象

一切类默认都是继承Object类,则自定义的类需重写toString()与equle()方法

文件操作

目录也是一个文件。对文件操作的工具有FIle,RAF(RandomAccessFile),该类主要是对文件的验证,将内容输入或读取文件中的内容,具体使用详见api帮助文档

流(Stream、Reader/Writer)

1、每个高级流必须有一个低级流来支撑(水龙头与水)

2、对于输入(Input)和输出(Output),例如客户端向服务端发送文字,即客户端为输出端(Output),服务端为输入端(Input)

3、在本章中主要介绍两大方向的流(字节与字符流)

1)字节流:

是以单个字节进行输入和输出。字节流都是以Stream结尾,其中常用的文件操作流中低级流为FileInputStream、FileOutputStream,高级流为BufferedInputStream、BufferedOutputStream,对象操作流ObjectInputStream、OjectOutputStream,具体使用方法详见api帮助文档

2)字符流:

是以单个字符进行输入与输出的操作。字符流都是以Reader/Writer结尾。常用流为:规定其传输的格式InputStreamReader、OutputStreamWriter,加速以块读写:BufferedReader、BufferedWriter,输出流PrintWriter,具体使用方式详见api帮助手册

网络Socket

Socket的功能是提供连接。常用的为Socket与ServerSocket。例如:客户端与服务端,服务端使用ServerSocket的构造方法打开一个端口,使用accept方法进行等待客户端连接(accept的返回值类型为socket),客户端使用Socket的构造方法进行将ip和port输入进行连接,若链接不成功,则将抛出异常。

进程与线程(Thread)

1、工作原理

线程是并发运行的,系统将时间划分为若干个时间片段,尽可能均匀的分配给每一个进程。获得时间片的进程被cpu执行,其他线程则处于等待状态。则微观上是走走停停,宏观上是都在运行

2、每个进程至少有一个线程。

3、创建线程的方式有两种:

1)继承Thread类,重写run方法。由于考虑到程序的侵入性,则不使用该方式创建

2)实现Runnable接口,重写run方法(重点

class test{
    public static void main(String[] args){
        A a = new A();
        Thread th = new Thread(a);
        th.start();
    }
}
class A implements Runnable{
    public void run(){
        system.out.print("hello world");
    }
}

3、在线程中还有一些问题需要考虑:同步锁(join)、异步锁(synchronized),等待时间(sleep),守护线程(Daemon):若该进程停止,则与改进程相关的线程全部停止

集合(Collection)

1、collection中常用的几个类,详见下图

Collection
List
Set
Queue/Deque
ArrayList-重点
LinkedList
HashSet
LinkedList

2、List存放的是有序的,可重复的数据,Set存放的是无序的,不可重复的数据。由于List的特点,则ArrayList可以与数组进行转换操作。ArrayList是数组连接(查询快,添加、删除慢),LinkedList是链式连接(添加、删除块,查询慢)

3、操作

1)List、Set集合中具有添加(add)、移除(remove)、修改(set)、查询(get)的元素操作,Queue/Deque队列具有添加(offer)、取出(poll)的元素操作,stack具有添加(push)、取出(pop)的元素操作

2)注意

若普通操作,则使用List集合即可,若具有必须将数据有序存放,则使用队列(先进先出),若具有前进后退操作则使用栈(stack,先进后出),尽量使用List

4、比较(Compara)

1)包装类、String都已经实现了Comparable接口,即可使用Collections.sort比较即可;关于String比较的规则,英文根据Uncode值进行比较,中文比较不了

2)若自定义的类进行比较,则具有两种方式:

  • 自定义的类实现Comparable接口,重写ComparTo方法。(尽量不使用该方式,考虑程序的侵入性
  • 匿名内部类,new Comparator对象,然后重写compara方法即可(尽量使用该方式)
 	List<String> z = new ArrayList<String>(); 
		z.add("ome234");
		z.add("two");
		z.add("three");
		z.add("four");
		z.add("five");
		System.out.println(z);
		Collections.sort(z,new Comparator<String>() {
			public int compare(String o1,String o2) {
				return o1.length()-o2.length();
			}
		});
		System.out.println(z);

5、并发安全
集合中使用synchronized进行加锁(collections.synchronizedList()),若为队列,则使用SlockingQueue/SlockingDeque进行加锁约束安全

由于考虑程序的侵入性与扩展性,尽量不要使用继承的方式来实现该功能或该类;上面的一些类中的方法未展开说明,使用过程中请查看api帮助手册

望各位业界人士提出宝贵意见

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值