Java 基础
java 基础
我是泛滥
这个作者很懒,什么都没留下…
展开
-
什么是序列化,怎么序列化,为什么序列化,反序列化会遇到什么问题,如何解决?
什么是序列化序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。如何实现序列化:实现Serializable接口即可ObjectOutputStream代表对象输出流:它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。ObjectInputStream代表对象输入流:它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对.原创 2021-01-20 21:28:36 · 245 阅读 · 0 评论 -
反射的运用
⽅法名描述public String getName()获取类的完全名称public Package getPackage()获取包信息public Class<? super T> getSuperclass()获取⽗类public Class<?>[] getInterfaces()获取实现⽗接⼝public Field[] getFields()获取字段信息public Method[] getMethods()获取...原创 2020-12-06 21:14:46 · 106 阅读 · 0 评论 -
理解String.intern()
在翻《深入理解Java虚拟机》的书时,又看到了2-7的 String.intern()返回引用的测试。其实要搞明白String.intern(),我总结了下面几条规则:一、new String都是在堆上创建字符串对象。当调用 intern() 方法时,编译器会将字符串添加到常量池中(stringTable维护),并返回指向该常量的引用。二、通过字面量赋值创建字符串(如:String str=”twm”)时,会先在常量池中查找是否存在相同的字符串,若存在,则将栈中的引用直接指向该字符串;若不存在,则转载 2020-12-04 22:59:23 · 263 阅读 · 0 评论 -
成员内部类里面为什么不能有静态成员和方法?
成员内部类里面为什么不能有静态成员和方法?非静态内部类不能有静态成员!成员内部类必须先实例化外部类对象然后再实例化成员内部类;非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。1、static类型的属性和方法,在类加载的时候就会存在于内存中。2、要使用某个类的static属性或者方法,那么这个类必须要加载到jvm中。基于以上两点,可以看出,如果一个非static的内部类如果具有static的属性或者方法,那么就会出现一种情况:内部类未加载,但是却试图原创 2020-12-02 21:01:06 · 1135 阅读 · 1 评论 -
java基础------包装类
基本数据类型对应的包装类byteByteshortShortintIntegerlongLongcharCharacterfloarFloatdoubleDoublebooleanBoolean装箱:基本数据类型转换为包装类; 拆箱:包装类转换为基本数据类型。package 包装类;public class Testdome { public static void main(String[] args...原创 2020-11-17 20:11:10 · 99 阅读 · 0 评论 -
java基础---常用API-----日期时间类
Date类概述java.util.Date类 表示特定的瞬间,精确到毫秒。继续查阅Date类的描述,发现Date拥有多个构造函数,只是部分已经过时,但是其中有未过时的构造函数可以把毫秒值转成日期对象。public Date():分配Date对象并初始化此对象,以表示分配它的时间(精确到毫秒)。public Date(long date):分配Date对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即1970年1月1日00:00:00 GMT)以来的指定毫秒数。tip原创 2020-08-05 12:41:51 · 111 阅读 · 0 评论 -
静态代理&动态代理(详解)
简单先了解一下代理模式?代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。简单的说就是,我们在访问实际对象时,是通过代理对象来访问的,代理模式就是在访问实际对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途。什么是代理模式 ?原创 2020-07-23 12:27:59 · 354 阅读 · 0 评论 -
java基础-----反射
反射是框架设计的灵魂一、反射的概述什么是反射反射方法基本信息操作反射-字段操作定义的字段反射-方法操作反射-构造器操作一、反射的概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。要想解剖一个类,必须先要获取到该类的字节码文件对象。而解剖使用的就是Class类中的方法.所以先要获取到每一个字节码文件对应的Class类型的对象.什么是反射反射原创 2020-06-19 23:21:26 · 109 阅读 · 0 评论 -
java基础------序列化
序列化概述ObjectOutputStream类构造方法序列化操作ObjectInputStream类构造方法反序列化操作1反序列化操作2练习:序列化集合案例分析案例实现概述Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。对象的数据、对象的类型和对象中存储的数据信息,都可以用来在内存中创建原创 2020-06-13 11:06:48 · 113 阅读 · 0 评论 -
java基础------Map集合
目录Map集合概述Map特点Map常用子类Map接口中的常用方法Map集合遍历键找值方式(keyset)Map集合遍历键值对方式(entry)自定义学生类练习Map:LinkedHashMapMap集合练习Map集合概述现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户对象等,这种一一对应的关系,就叫做映射。Java提供了专门的集合类用来存放这种对象关系的对象,即java.util.Map接口。Map特点Collection中的集合,元素是孤立存在的(原创 2020-06-11 17:51:23 · 198 阅读 · 0 评论 -
java基础------可变参数
可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格式:修饰符 返回值类型 方法名(参数类型... 形参名){ }代码演示:package Text_01_可变参数;public class ChangArgs { public static void main(String[] args) { //计算两数相加 int add = add(1, 2); System.out.原创 2020-06-11 09:40:48 · 162 阅读 · 0 评论 -
java基础------数据结构
vvvvvvvv原创 2020-06-10 18:05:40 · 118 阅读 · 1 评论 -
java基础------collections工具类
目录Collections常用功能代码演示:Comparator比较器简述Comparable和Comparator两个接口的区别。练习扩展Collections常用功能java.utils.Collections是集合工具类,用来对集合进行操作。部分方法如下:public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(Li原创 2020-06-10 17:09:25 · 159 阅读 · 0 评论 -
java基础------HashSet与LinkedHashSet介绍
目录Set接口HashSet集合介绍HashSet集合存储数据的结构(哈希表)2.3 HashSet存储自定义类型元素2.3 LinkedHashSetSet接口java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。Set集合原创 2020-06-10 12:10:55 · 866 阅读 · 0 评论 -
java基础------LinkedList集合
LinkedList集合java.util.LinkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。LinkedList是一个双向链表,那么双向链表是什么样子的呢,我们用个图了解下实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而LinkedList提供了大量首尾操作的方法。这些方法我们作为了解即可:public void addFirst(E e):将指定元素插入此列表的开头。public void addLast(E e):将指定元素添加到此列表的结尾。p原创 2020-06-09 21:15:40 · 171 阅读 · 0 评论 -
java基础------泛型
目录泛型概述使用泛型的好处泛型的定义与使用定义和使用含有泛型的类含有泛型的方法含有泛型的接口泛型通配符通配符基本使用通配符高级使用----受限泛型总结泛型概述在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换public class GenericDemo { public static void main(String[] args) { Collectio原创 2020-06-09 17:04:42 · 141 阅读 · 0 评论 -
Java基础------斗地主小案例
import java.util.ArrayList;import java.util.Collections;public class 斗地主 { public static void main(String[] args) { //准备牌 //定义总的一个集合存放poker ArrayList<String>poker=new ArrayList<>(); //定义花色数组 String原创 2020-06-09 11:46:39 · 163 阅读 · 0 评论 -
java基础----包装类转换
基本数据类型与封装类基本数据类型与封装类是一一对应的如:int 对应Integer类。class Test{ public static void main(String[] args) { int i=3; Integer in = new Integer(i); //转换成Integer类型。 int j= in.intValue(); //转换成int System.out原创 2020-05-31 22:43:56 · 223 阅读 · 0 评论 -
java基础------简单了解Java内存划分
java的内存划分内存就是计算机当中的内存条,程序如果想运行,需要开辟一块内存空间,计算机当中的整体内存是由操作系统管理的,java需要申请内存才可以运行,申请的内存划分为五个部分,不同的部分管理不同的功能1.栈(Stack):里面存放的是方法中的局部变量。(方法的运行一定要在栈中。)局部变量:方法的参数,或者是方法{}内部的变量。 作用域:一旦超出作用域(大括号),立刻从栈内存中消失。2.堆(Heap):凡是new出来的东西,都在堆内存当中,比如,数组。堆内存当中都有一个地址值:16进原创 2020-05-31 10:30:08 · 188 阅读 · 0 评论 -
java基础------System类
arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。参数src - 源数组。srcPos - 源数组中的起始位置。dest - 目标数组。destPos - 目的地数据中的起始位置。length - 要复制的数组元素的数量。public class Test { public static void main(String[] ar原创 2020-05-30 16:55:06 · 182 阅读 · 0 评论 -
重载 覆盖 ------ 认识
方法重载方法重载(Overload)是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数或参数的顺序不同的方法。Java的方法重载,就是在类中可以创建多个方法,它们可以有相同的名字,但必须具有不同的参数,即或者是参数的个数不同,或者是参数的类型不同。调用方法时通过传递给它们的不同个数和类型的参数,以及传入参数的顺序来决定具体使用原创 2020-05-27 16:06:08 · 151 阅读 · 0 评论 -
java基础----java的单元测试JUnit4
这里写目录标题概念单元测试的优点Junit测试类编写原则断言的常用方法使用@Before和@After对于每一个@Test方法的执行顺序Junit常用注解概念java单元测试是最小的功能单元测试代码, 单元测试就是针对单个java方法的测试 java程序的最小功能单元是方法单元测试的优点main方法进行测试的缺点:只能有一个main()方法, 不能把测试代码分离出来无法打印出测试结果和期望结果.单元测试的优点:确保单个方法正常运行如果修改了方法代码, 只需要保其对应的单元测试通过原创 2020-05-11 19:45:00 · 341 阅读 · 0 评论 -
Java基础------飞机大战实训流程--初学者适用
目录项目简单简介项目游戏成效图类介绍ShootMain类MainFrame类FlyingObject抽象类HeroAirPlean类BigAirPlean类SmallAirPlean类Bee类Bullet 类Sky类Awared 接口Enemy 接口项目简单简介飞机大战是集成这段时间实训以来的成果,其中包括了所学的封装,继承,多态,方法的重载等多个知识点构成的一款简单的小游戏。经过一个礼拜多的...原创 2020-05-08 11:00:12 · 1154 阅读 · 0 评论 -
java.lang.IllegalArgumentException:Input == null的异常处理
问题如下;java.lang.ExceptionInInitializerErrorCaused by: java.lang.IllegalArgumentException: input == null! at javax.imageio.ImageIO.read(ImageIO.java:1388) at com.pleanwar.fiying.FlyingObject.loadIma...原创 2020-05-03 18:02:13 · 3017 阅读 · 2 评论 -
java基础-----网络通信--Udp通信
目录前言DatagramSocket类DatagramPacket类案例UDP丢包案例解决方案优化一优化二URl类案例前言UDP为用户数据报协议,在java中操纵UDP使用JDK中java.net包下的DatagramSocket和DatagramPacket类,可以方便的控制用户数据报文。DatagramPacket类将数据字节填充到UDP包中,这称为数据报。DatagramSocket...原创 2020-05-01 21:31:43 · 478 阅读 · 0 评论 -
Java基础------网络通信--Tcp通信
目录前言Tcp概述Scoket类ServiceScoket类客户端服务端通信代码客户端服务端Tcp上传文档案例客户端服务端Tcp上传文档案例(优化)客户端服务端模拟B\S服务器服务端总结前言TCP(Transmission Control Protocol),即传输控制协议。是一种面向连接的、可靠的、基于字节流的传输层通信协议。不同于UDP,TCP更像是提供一种可靠的、像管道一样的连接。J...原创 2020-04-29 23:40:02 · 279 阅读 · 0 评论 -
java基础------网络通信---三要素
目录网络编程IP地址协议总结网络编程网络编程:使用编程语言实现多台计算机的通信。IP地址IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设 备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”。IP地址分类IPv4:是一个32位的二进制数,通常被分为4个字节,表示成...原创 2020-04-27 21:22:28 · 407 阅读 · 0 评论 -
java基础------IO流-字节流与字符流
目录前言基本概念IO流的分类字节流和字符流节点流和处理流IO流的四大基类字符流字符流写入数据字符流读取数据字节流字节流写入数据字节流读取数据字节流复制字节复制优化总结前言流”和“数据”也就得到我们的重点数据流,就如同我们的水流一样,对于水流,那流入流出的都是水,而我们的数据流流入流出的自然就是数据基本概念Java对数据的操作是通过流的方式,IO流用来处理设备之间的数据传输,上传文件和...原创 2020-04-27 21:01:43 · 404 阅读 · 0 评论 -
java基础------轻松了解-BS架构和CS架构的区别
目录Client/ServerBrowser/ServerCS、BS 对硬件环境的要求CS的优缺点BS的优缺点总结Client/ServerCS(Client/Server):客户端----服务器结构。C/S结构在技术上很成熟,主要特点是 交互性强、具有安全的存取模式、网络通信量低、响应速度快、利于处理大量数据因为客户端要负责绝大多数的业务逻辑和UI展示,又称为胖客户端。它充分利用两端硬件...原创 2020-04-26 23:15:12 · 1770 阅读 · 0 评论 -
java基础------常用类 Scanner Random类
方法scanner类random类scanner类1. 导包import java.util.Scanner;2. 创建键盘录入对象Scanner sc = new Scanner(System.in);3. 接收数据int i = sc.nextInt();random类1. 导包import java.util.Random;2. 创建键盘录入对象Random r ...原创 2020-04-26 19:09:45 · 187 阅读 · 0 评论 -
java基础------线程知识点
什么是线程?线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编栓,你可以使用多线程对运算密集型任好提速。比如,如果个线程完成一个任务要100毫秒,那么用十个线程完成政任务只需10毫秒,Java在塔言 层面对多找程提供了卓越的支持,它也是一个很好的突点。2)线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线屋,...原创 2020-04-25 19:55:05 · 120 阅读 · 0 评论 -
java基础------线程之死锁处理方法
目录前言定义死锁代码解决方案:方案一 设立时间差方案二 避免锁的嵌套方案三 设置标志位案例(面试提问)总结前言死锁不是一种正常的现象, 是在多线程程序中需要避免的定义多个进程在执行过程中,因争夺同类资源且资源分配不当而造成的一种互相等待的现象,若无外力作用,它们都将永远无法继续执行,这种状态称为死锁,这些处于等待状态的进程称为死锁进程。死锁代码也许大家现在看到死锁的定义还不是...原创 2020-04-25 19:43:40 · 187 阅读 · 0 评论 -
java基础------集合ArrayList ,LinkedList
目录前言数组与集合区别集合描述集合格式方法ArrayList实例1.add(E e)2.add(int index, E element)3.addAll(Collection<? extends E> c)4.clear() 与 isEmpty()5.contains(Object o)6.indexOf(Object o)7.iterator()8.remove(int ind...原创 2020-04-22 22:12:45 · 1236 阅读 · 0 评论 -
String、StringBuffer、StringBuilder 类详细的区别
原创 2020-04-20 12:19:42 · 124 阅读 · 0 评论 -
java基础------异常
这里写目录标题前言异常定义java异常分类try 格式实例throw 语法实例throws实例自定义异常前言程序在运行过程中发生错误或异常情况是不可避免的,如果每一个运行时错误都由程序员手动控制和处理,其工作量是不可想象的。异常定义异常就是有异于常态,和正常情况不一样,有错误出现。在java中,阻止当前方法或作用域的情况,称之为异常。java异常分类Java语言按照错误...原创 2020-04-17 17:24:54 · 237 阅读 · 0 评论 -
java基础------接口
目录前言接口的定义定义格式基本的实现实现格式方法的使用接口的多实现(多继承)实现格式:优先级的问题接口的多继承总结前言为了体现事物 的扩展性Java 中就提供了接口来定义这些额外功能。接口的定义使用interface关键字,会被编译成.class文件,一定要明确接口并不是类,而是引用数据类型。引用数据类型:数组,类,接口。接口的使用,它不能创建对象,但是可以被实现(impleme...原创 2020-04-16 18:40:27 · 154 阅读 · 0 评论 -
java基础------多态
目录前言多态的定义多态的体现实例多态的好处引用类型转换转型的异常instanceof关键字总结前言生活中,比如跑的动作,小猫、小狗和大象,跑起来是不一样的。再比如飞的动作,昆虫、鸟类和飞机,飞起来也是不一样的。可见,同一行为,通过不同的事物,可以体现出来的不同的形态。多态,描述的就是这样的状态。为什么要学习多态?可以让一个父类拥有更多的子类前提:继承或者实现方法的重写父类引用...原创 2020-04-14 11:42:31 · 176 阅读 · 0 评论 -
java基础------抽象类
目录前言抽象类&抽象方法的定义简单实例抽象类注意事项抽象类应用final关键字总结前言在面向对象的概念中,所有的对象对象都是通过类来描绘的,但是并不是所有的类都是用来描绘对象的,当一个类没有足够的信息来描绘一个具体的对象,而是需要其它的类来对它进行支撑,那么我们就将这样的类成为抽象类,用abstract 关键字来声明。抽象类&抽象方法的定义抽象方法定义格式:publi...原创 2020-04-13 18:12:14 · 130 阅读 · 0 评论 -
java基础------继承
目录前言继承定义继承格式简单实例小节父类不被继承继承后的特点成员变量--成员变量不重名成员变量--成员变量重名继承后的特点成员方法--成员方法不重名成员方法--成员方法重名重写案例构造方法super和this的用法总结前言现实生活中的继承,孩子继承父辈的财产,孩子可以直接拿父辈的财产来使用,Java中的继承是指在现有类的基础上定义一个新的类,现有类称为父类,新的类称为子类,子类会自动拥有父类...原创 2020-04-12 20:50:33 · 403 阅读 · 0 评论 -
java基础------File类
目录File类定义File常用方法递归删除递归显示File类定义对文件进行操作获取文件信息和对文件的整体操作File常用方法createNewFile() 创建文件exists() 判断文件是否存在mkdir() 创建文件夹mkdirs() 创建层级文件夹isFile() 判断指定文件是否普通文件isDirectory()判断指定文件是否层级目录delete()删除...原创 2020-04-11 13:42:42 · 114 阅读 · 0 评论