![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
北朽暖栀24
这个作者很懒,什么都没留下…
展开
-
java网络编程——UDP编程
1.发送端编程核心:构造数据包DatagramPacket 这里面的参数是数据,数据要发送的部分(这里是0到data.length),目的ip,端口号。之后使用创建的DatagramPacket来进行发送2.接收端编程将其receive在一个packet中,之后将其输出这是它的构造器offset是偏移量,length读的数据的长度和TCP编程的区别:TCP先开客户端再开服务器端会报错,这里会显示拒绝连接。UDP不会,只是收不到数据。所以说UDP不管是否收到,只管发送。...原创 2020-12-27 21:04:14 · 89 阅读 · 0 评论 -
java网络编程——TCP(套接字实现客户端服务器端通信)
客户端1.创建套接字,绑定ip和端口。2.创建输出流(socket.getOutputStream())。3.开始写出数据。服务器端1.这里创建的是Serversocket,这里只需要绑定端口。2.通过Serversocket来获得socket,也就是客户端的套接字。3.通过套接字得到输入流。4.将其写入ByteArrayOutputStream。5.将ByteArrayOutputStream转化为字符串输出。先运行服务器端,再运行客户端,之后再客户端的控制界面会有结果如下:原创 2020-12-26 20:34:21 · 741 阅读 · 0 评论 -
Java i/o总结——对象流
序列化:反序列化:字符串已经实现了serializablejava对象能序列化的要求:什么抽象方法也没有,这个是标识接口,标识着凡是实现这个接口的类,都是可序列化的。例子写入:读取:将文件输入输出流包在里面,使用readObject和writeObject方法读取。...原创 2020-12-24 17:05:56 · 55 阅读 · 1 评论 -
java I/O总结——标准的输入输出流
例子为了使用BufferedReader的readLine()的方法,先使用转换流,再使用缓冲流。原创 2020-12-24 16:10:13 · 80 阅读 · 0 评论 -
常用字符集总结(utf-8,unicode,ASCII,GBK)
几种常见的编码:1.美国标准ASCII码8位,其中1位没有用,只能表示128种情况2.ISO8859欧洲,拉丁用的,因为美国的128种不够全面,这时候需要对其进行扩展3.中国用的GB2312,GBKGBK是GB2312的升级版本,这里最多两个字符来表示一个字符。这里的问题是底层如何知道一个字节到底是单独表示字符还是两个字节加在一起表示字符。这里是开头为0表示单独表示,开头为1表示和后面的一起表示。4.Unicode融合了多国的编码方式,为所有国家字符分配了一个编码。所有文字都用2个字节表示原创 2020-12-24 14:40:28 · 705 阅读 · 0 评论 -
java I/O——转换流
1.转换流的概念转换流,实现字节流和字符流的转换2.转换流的解码,编码解码就是看不懂的转换为看得懂的编码就是看得到的转换为看不懂的例子输入输出综合运用输入和输出流的例子:...原创 2020-12-24 14:07:06 · 57 阅读 · 0 评论 -
java-I/O缓冲流总结
1.缓冲流属于处理流,套在现有的流的基础上作用:加快速度为什么能加快速度?内部有缓冲区,减少了读的次数在缓冲流中有一个buffer_size,大小为8192构造器这时候会构造一个缓冲区,大小为8192原理:先将读取的放到缓冲区里面,等到缓冲区满了在往2.缓冲流的案例要点: 将输入输出流包在缓冲流里,之后使用缓冲流来读写关闭的时候,只要关闭缓冲流就可以了。输出流 flushBuffer(),刷新缓冲区,当到达8192的时候自动的刷新,将缓冲区的数据放出去,也可以调用flush原创 2020-12-24 11:25:29 · 143 阅读 · 0 评论 -
Java-i/o总结——字节流
1.一些基础的知识英文字符是一个字节存的,中文字符在utf-8是3个字节存的。所以有的时候该用字符流的时候用字节流,中文可能会乱码2.用字节流实现图片的复制相较于字符流,只有两个变化1.将FileReader和FileInputStream改成FileWriter和FileOutputstream2.将缓冲的数组改为byte单位的...原创 2020-12-23 22:06:14 · 60 阅读 · 0 评论 -
JAVA的I/O的总结——字符流(FileReader/FileWriter)
1.流的分类,三种分类方式2.FileReader例子:hello.txt代码注意:1.用file初始化FileRead2.用read函数的返回值判断是否到了底部3.将read操作循环(相当于迭代器的遍历)4.将流关闭(垃圾回收不能关闭套接字,输入输出流)加上异常处理后的细节:运行结果总结:1.有异常的地方都需要包起来2.将流的关闭操作放到finally里面3.记得判断fr是否为空,为空将它关闭显然不行。将上一个案例进行升级,用read的重载方法,每次多读几个字符。原创 2020-12-23 15:52:04 · 93 阅读 · 0 评论 -
java三元表达式的解读
如下:其中isLastSeparator是boolean型str.indexOf(ch)表示ch第一次出现的索引,lastIndexOf(ch)表示ch最后一次出现的索引。三元表达式的运算顺序:这句话看起来很奇怪,其实是先运算再将结果赋给pos...原创 2020-12-10 20:55:39 · 261 阅读 · 0 评论 -
3句话总结junit测试
1.@Before @After分别用来在测试开始之前做的事情,和结束之后做的事情。@Test表示测试部分。2.用Assert.assertEquals()函数来完成Test,关于 Assert的用法,这个函数可以判断数字是否相等,还可以判断boolean, 是否是null ,是否是相同对象等等常见逻辑。如下:3.Assert.assertEquals()测试成功了,代码继续执行,测试失败了,抛出异常。例子:运行结果:...原创 2020-12-10 14:29:10 · 155 阅读 · 0 评论 -
Byte和byte的区别和联系
1:byte和Byte区别byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储的数据范围是-128~+127。Byte是java.lang中的一个类,目的是为基本数据类型byte进行封装。2:二者联系:Byte是byte的包装类,就如同Integer和int的关系3.自动装箱和拆箱那么,有了基本数据类型和包装类,肯定有些时候要在他们之间进行转换。比如把一个基本数据类型的int转换成一个包装类型的Integer对象。我们认为包装类是对基本类型的包装,所以,把基原创 2020-12-10 13:17:19 · 7731 阅读 · 0 评论 -
java使用scanner输入的分析(详细)
1.Scanner是一种扫描器:Scanner scanner = new Scanner(System.in);//System.in是一种输入流String str= scanner.next();scanner.next()遇到空格就结束读取Scanner scanner = new Scanner(System.in);//System.in是一种输入流String str= scanner.nextLine();scanner.nextLine()遇到enter才停止读取原创 2020-12-06 11:34:01 · 159 阅读 · 0 评论 -
一句话总结 HashSet的add方法添加重复元素
add()每次添加的时候比较对象的hashCode是否相同,若相同,再进行equals方法的判断,true认为元素重复,false元素不重复。若hashCode不相同,则将元素插入。add()添加成功的时候(不重复的时候)返回true,重复就返回false。...原创 2020-07-20 00:41:05 · 1046 阅读 · 1 评论 -
设计模式笔记——适配器模式
适配器是将某个类的接口转化为客户期望的接口的形式,增加兼容性。打个比方:生活中的220V的电不能给手机充电,这时候需要一个适配器来将他转为5V。适配器模式有3种:第一种是类适配器模式。第二种是对象适配器模式。第三种是接口适配器模式类适配器模式:大致类图如下:这里最漂亮的就是应用了两个继承,分别继承类和一个接口,从而在适配器类中可以调用接口和父类的方法。(比如:在output5v中调用output220v)从而完成适配的过程。同时,这里client调用接口就可以调用到Adapter,非常巧妙。原创 2020-06-08 23:54:10 · 113 阅读 · 0 评论 -
建造者模式和抽象工厂模式的区别
建造者模式是把对象的创建分散开来,每个抽象方法负责其中的一部分。抽象工厂是每个方法负责一个产品族。建造者模式所有函数加到一起才能生成一个对象。抽象工厂一个函数生成一个对象。...原创 2020-06-07 02:57:42 · 988 阅读 · 0 评论 -
原型模式深拷贝的代码案例——设计模式笔记
public class Client { public static void main(String[] args) throws CloneNotSupportedException { // TODO Auto-generated method stub DeepCloneableTarget p=new DeepCloneableTarget(); p.name="Jack"; p.deep1=new DeepcloneTarget("猩猩","你好");原创 2020-06-06 12:13:16 · 136 阅读 · 0 评论 -
自动装箱和自动拆箱深度剖析
自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。因为这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。原始类型byte, short, char, int, long, float, double 和 boolean 对应的封装类为Byte, Short, Character, Integer, Long, Float, Double, Boolean。自动装原创 2020-06-05 12:03:47 · 357 阅读 · 0 评论 -
ArrayList扩容和缩容的总结
扩容比较简单,ArrayList的初始长度是10。当长度达到最大长度的时候扩容为1.5倍。缩容:ArrayList不会自动缩容,当使用trimToSize()方法的时候可以缩容 public void trimToSize() { modCount++; if (size < elementData.length) { elementData = (size == 0) ? EMPTY_ELEMENTDATA原创 2020-06-04 13:24:59 · 912 阅读 · 0 评论 -
静态内部类和成员内部类的区别
静态内部类就是个独立的类。之所以要弄这么个东西,只是起到一个注释的效果,而且这个注释可静态检查。比如有A,B两个类,B有点特殊,虽然可以独立存在,但只被A使用。这时候怎么办?如果把B并入A里,复杂度提高,搞得A违反单一职责。如果B独立,又可能被其他类(比如同一个包下的C)依赖,不符合设计的本意。所以不如将其变成A.B,等于添加个注释,告诉其他类别使用B了,它只跟A玩。非静态的才是真正的内部类,对其外部类有个引用。根据Oracle官方的说法:Nested classes are divided into t原创 2020-06-04 00:07:40 · 494 阅读 · 0 评论 -
线程内存详解:java内存模型详解——可见性实现
Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。这里说的变量包括实例字段、静态字段和构成数组对象的元素,不包括局部变量与方法参数,因为后者是线程私有的,不会共享,也就不存在竞争的问题。Java内存模型规定了所有的变量都存...原创 2020-06-03 23:10:26 · 154 阅读 · 0 评论 -
图说设计模式之观察者模式
下图为一个观察者模式的例子:在被观察者里注册观察者。之后调用被观察者的notify()方法,这里的notify()方法里是观察者调用update方法将被观察者/被观察者的数据传给观察者。拥有被观察对象后使用它调用被观察者的get方法来获取数据。1.第一种a是一种数据结构,用来传递信息。2.第二种是将a对象全部传递进去,直接使用a调用。...原创 2020-06-02 16:11:43 · 86 阅读 · 0 评论 -
图说设计模式之单例模式
class EagerSingleton { private static final EagerSingleton instance = new EagerSingleton(); private EagerSingleton() { } public static EagerSingleton getInstance() { return instance; } }当类被加载时,静态变量instance会被初始.原创 2020-06-02 15:48:11 · 104 阅读 · 0 评论 -
java中HashSet中方法的总结
1.增加add();public boolean add(E e) {return map.put(e, PRESENT)==null;}2.删除remove(news);public boolean remove(Object o) {return map.remove(o)==PRESENT;}3.对比查找contains();public boolean contains(Object o) {return map.containsKey(o);}4.清空集合clear原创 2020-06-01 14:50:57 · 106 阅读 · 0 评论 -
一句话总结getOrDefault方法
getOrDefault(Object key, V defaultValue)意思就是当Map集合中有这个key时,就使用这个key对应的value值,如果没有就使用默认值defaultValue原创 2020-06-01 14:43:21 · 32950 阅读 · 5 评论 -
一个例子说明java 三元运算符
if(a<b)min=a;elsemin=b;可以用下面的条件运算符来处理min=(a<b)?a:b;原创 2020-06-01 10:40:42 · 624 阅读 · 0 评论 -
四句话总结&&与&,|和||的区别
&&与&的区别为:&无论左边的结果是否为真,都将继续运算右边的逻辑表达式;&&左边的值为false时,将不会继续运算其右边的逻辑表达式,结果为false;||与|的区别为:|无论其左边的结果是否为true,都将继续运算右边的逻辑表达式;||当计算完左边的逻辑表达式且其结果为true时,将不会继续计算右边的逻辑表达式,结果为true;...原创 2020-05-31 15:34:13 · 132 阅读 · 0 评论 -
stack中的方法总结
stack继承了vecter,自己独有的方法只有下面5个:1.Object push(Object element):将元素推送到堆栈顶部。2.Object pop():移除并返回堆栈的顶部元素。如果我们在调用堆栈为空时调用pop(),则抛出’EmptyStackException’异常。3.Object peek():返回堆栈顶部的元素,但不删除它。4.boolean empty():如果堆栈顶部没有任何内容,则返回true。否则,返回false。5.int search(Object elem原创 2020-05-31 15:31:51 · 2276 阅读 · 0 评论 -
Synchronized相关知识点大全
synchronized 有以下三种作用范围:在静态方法上加锁;在非静态方法上加锁;在代码块上加锁;如下:public class SynchronizedSample { private final Object lock = new Object(); private static int money = 0; //非静态方法 public synchronized void noStaticMethod(){原创 2020-05-31 08:18:48 · 143 阅读 · 0 评论 -
leetcode解法评析 890.查找和替换模式
你有一个单词列表 words 和一个模式 pattern,你想知道 words 中的哪些单词与模式匹配。如果存在字母的排列 p ,使得将模式中的每个字母 x 替换为 p(x) 之后,我们就得到了所需的单词,那么单词与模式是匹配的。(回想一下,字母的排列是从字母到字母的双射:每个字母映射到另一个字母,没有两个字母映射到同一个字母。)返回 words 中与给定模式匹配的单词列表。你可以按任何顺序返回答案。示例:输入:words = [“abc”,“deq”,“mee”,“aqq”,“dkd”,“c原创 2020-05-30 18:50:22 · 96 阅读 · 0 评论 -
String intern()的使用最全总结
intern的使用:JDK1.8中:判断这个常量是否存在于常量池。如果存在判断存在内容是引用还是常量,如果是引用,返回引用地址指向堆空间对象,如果是常量,直接返回常量池常量如果不存在,将当前对象引用复制到常量池,并且返回的是当前对象的引用public static void main(String[] args) { String s1 = new String("1"); s1.intern();//这里之前已经将s1的常量放进去了,写不写都指向常量1 Stri原创 2020-05-29 21:57:38 · 107 阅读 · 0 评论 -
各种编码方式的联系总结(ASCII,unicode,utf-8)
1.ASCII码最早只有127个字母被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。但是要处理中文显然一个字节是不够的,至少需要两个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。2.其他的编码你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本原创 2020-05-29 17:01:36 · 277 阅读 · 0 评论 -
区分String str=null与String str=“”
简而言之String str= null ; 表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间;str.length()报错;String str= “”; 表示声明一个字符串类型的引用,其值为”“空字符串,这个str引用指向的是空字符串的内存空间;str.length()=0;...原创 2020-05-26 19:05:07 · 98 阅读 · 0 评论 -
Address already in use: JVM_Bind(JAVA网络编程遇到的bug)
这时候是你指定的端口已经被占用了,换成其他端口号就行。原创 2020-05-25 19:21:08 · 118 阅读 · 0 评论 -
Java UDP网络编程
客户端代码1.创建套接字2.构建数据包这里数据包需构建inet和data3.用套接字发送数据包4.关闭套接字public void sender() throws IOException { DatagramSocket socket=new DatagramSocket(); String str="我是以UDP的方式传送的"; byte[] data =str.getBytes(); InetAddress inet=InetAddress.getByName("127.0.0.1原创 2020-05-25 17:58:39 · 79 阅读 · 0 评论 -
JAVA TCP网络编程(客户端和服务器端的代码)
客户端代码:1.创建InetAddress 对象;2.绑定套接字3.创建输出流4.向外输出信息public void client() { Socket socket=null; OutputStream os=null; try { InetAddress inet=InetAddress.getByName("127.0.0.1"); socket=new Socket(inet,8080); os= socket.getOutputStream();原创 2020-05-25 17:44:34 · 618 阅读 · 1 评论 -
no tests found with test runner JUnit5
将导入的import org.junit.jupiter.api.Test;换成import org.junit.Test;原创 2020-05-24 08:58:48 · 376 阅读 · 0 评论 -
java 包装类详细解析
基本数据类型Java 基本数据按类型可以分为四大类:布尔型、整数型、浮点型、字符型,这四大类包含 8 种基本数据类型。布尔型:boolean整数型:byte、short、int、long浮点型:float、double字符型:charfloat 单浮点型 0.0f 1.4e-45 到 3.4e+38 Floatdouble 双浮点型 0.0d 4.9e-324 到 1.798e+308 Double除 char 的包装类 Character 和 int 的包装类 Integer 之外,其他基原创 2020-05-17 16:20:03 · 185 阅读 · 0 评论 -
类中重写toString()的作用
它通常只是为了方便输出,是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法例子1:public class A{public String toString(){return “this is A”;}}如果某个方法里面有如下句子:A obj=new A();System.out.println(obj);会得到输出:this is A例子2://将to...原创 2020-05-07 21:24:43 · 355 阅读 · 0 评论 -
怎么看Eclipse版本
点击help 然后点击about原创 2020-05-04 23:40:43 · 108 阅读 · 0 评论