Java基础知识
范亚明
慢慢学习,慢慢成长
展开
-
Java基础知识之反射机制
一.反射机制的定义:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制二.反射机制提供的功能:①在运行时判断任意一个对象所属的类;②在运行时构造任意一个类的对象;③在运行时判断任意一个类所具有的成员变量和方法;④在运行时调用任意一个对象的成员变量和方法;⑤...原创 2020-04-07 00:02:39 · 154 阅读 · 0 评论 -
Java基础知识之类加载机制
一.JVM和类:运行Java: java 带有main方法的类名启动JVM,并加载字节码.当调用java命令来运行某个Java程序时,该命令将会启动一个JVM进程.同一个JVM中的所有线程,变量都处于同一个进程中,共享该JVM的内存区域.当出现以下情况是,JVM会退出:1):程序正常执行结束.2):使用System.exit(0)方法;3):出现异常时,没有捕获异常.4):平台...原创 2020-04-06 18:59:18 · 100 阅读 · 0 评论 -
Java基础之网络编程--TCP的三次握手和四次挥手
客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西;由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连接的基础上发送的;在一个TCP连接上是可以发送多个http请求的,不同的版本这个模式不一样。在HTTP/1.0中...原创 2020-04-06 17:59:33 · 727 阅读 · 0 评论 -
Java基础之网络编程
一.网络概述:(1)计算机网路:计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。虽然网络类型的划分标准各种各样,...原创 2020-04-06 17:50:10 · 363 阅读 · 0 评论 -
Java基础之正则表达式
一.正则表达式(Regex)表示表达式正确的规则:主要用于(匹配判断,分割操作,替换操作(网络爬虫(Lucene))):二.相关规范:三.详细介绍和使用说明见百度百科正则表达式...原创 2020-04-06 14:36:27 · 90 阅读 · 0 评论 -
Java基础之读取properties配置文件
一.Properties 类基本定义:Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。一个属性列表可包含另一个属性列表作为它的“默认值”;如果未能在原有的属性列表中搜索到属性键,则搜索第二个属性列表。因为 Properties 继承于 Hashtable,所以可对 Properties 对象应用 put...原创 2020-04-06 13:57:51 · 201 阅读 · 0 评论 -
Java基础知识之扫描器(Scanner)
一.定义:一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。二.构造方法:三.常用方法:主要分为两大类:存在的方法: xxx表示数据类型,如byte,int ,boolean等.① boolean hasNextXxx(...原创 2020-04-06 13:12:16 · 1351 阅读 · 0 评论 -
Java基础知识之对象流(序列化和反序列化)
一.序列化和反序列化:序 列 化: 指把堆内存中的Java对象数据,通过某种方式把对象存储到磁盘文件中或者传递给其他网络的节点(在网络上传输).我们把这个过程称之为序列化.反序列化:把磁盘文件中的对象数据或者把网络节点上的对象数据,恢复成Java对象的过程.为什么要做序列化:1):在分布式系统中,需要共享的数据的JavaBean对象,都得做序列化,此时需要把对象再网络上传输,此时就得...原创 2020-04-06 12:22:07 · 276 阅读 · 0 评论 -
Java基础知识之IO
一.什么是IO?IO:(Input/Output):输入和输出.IO设备: 和电脑通信的设备.输入设备:麦克风,扫描器,键盘,鼠标等.输出设备:显示器,打印机,投影仪,耳机,音响等.二.为什么程序需要IO呢?IO操作是一个相对的过程,一般的,我们在程序角度来思考(程序的内存).程序需要数据: 把数据流入到程序中,输入.程序需要保存数据,把数据传递给别人: 输出.三.IO示意图...原创 2020-04-05 16:36:24 · 108 阅读 · 0 评论 -
Java基础知识之字符编码
一.字符编码的发展历程:字符编码的发展历程:阶段1:计算机只认识数字,我们在计算机里一切数据都是以数字来表示,因为英文符号有限,所以规定使用的字节的最高位是0.每一个字节都是以0~127之间的数字来表示,比如A对应65,a对应97.这就是美国标准信息交换码-ASCII.阶段2:随着计算机在全球的普及,很多国家和地区都把自己的字符引入了计算机,比如汉字.此时发现一个字节能表示数字范围...原创 2020-04-05 15:29:18 · 118 阅读 · 0 评论 -
Java基础知识之集合工具类Arrays和Collections
一.Arrays类:常用方法(将数组转换为一个集合):public static List asList(T… a) 等价于public static List asList(T[] a).注意: 通过Arrays.asList方法得到的List对象的长度是固定的,不能增,也不能减.asList方法返回的ArrayList对象,不是java.util.ArrayList而是Arr...原创 2020-04-04 17:17:37 · 170 阅读 · 0 评论 -
浅析HashMap和concurrenthashmap的线程安全问题
一.hash碰撞和解决方案对象Hash的前提是实现equals()和hashCode()两个方法,那么HashCode()的作用就是保证对象返回唯一hash值,但当两个对象计算值一样时,这就发生了碰撞冲突解决方案:1.开放地址法开放地执法有一个公式:Hi=(H(key)+di) MOD m i=1,2,…,k(k<=m-1)其中,m为哈希表的表长。di 是产生冲突的时候的增量序列。...原创 2020-04-04 16:42:16 · 229 阅读 · 0 评论 -
Java基础知识之map--常用的实现类(hashMap,TreeMap,LinkedHashMap,Hashtable,Properties)和操作及相关面试题
1原创 2020-04-04 15:55:14 · 267 阅读 · 0 评论 -
Java基础知识之map
1原创 2020-04-04 14:56:22 · 179 阅读 · 0 评论 -
Java基础知识之list和set的区别及相关面试题
1原创 2020-04-04 14:44:26 · 7031 阅读 · 0 评论 -
Java基础知识--集合框架--Set--TreeSet的排序
一.排序概念:TreeSet集合底层才有红黑树算法,会对存储的元素默认使用自然排序(从小到大).注意: 必须保证TreeSet集合中的元素对象是相同的数据类型,否则报错.二.自然排序:自然排序(从小到大):TreeSet调用集合元素的compareTo方法来比较元素的大小关系,然后讲集合元素按照升序排列(从小到大).注意:要求TreeSet集合中元素得实现java.util.Compa...原创 2020-04-04 14:33:22 · 185 阅读 · 0 评论 -
Java基础知识--集合框架--Set及其实现类
一.Set的定义和概念:Set是Collection子接口,模拟了数学上的集的概念。Set集合存储特点:1):不允许元素重复.2):不会记录元素的先后添加顺序.Set只包含从Collection继承的方法,不过Set无法记住添加的顺序,不允许包含重复的元素。当试图添加两个相同元素进Set集合,添加操作失败,add()方法返回false。Set判断两个对象是否相等用**equals,**...原创 2020-04-03 21:45:02 · 179 阅读 · 0 评论 -
Java基础知识之泛型操作和相关面试题
1原创 2020-04-03 20:08:02 · 425 阅读 · 0 评论 -
Java基础知识之集合的迭代操作
一.集合的迭代操作:把集合做的元素一个一个的遍历取出来.二.迭代器对象Iterator: 迭代器对象,只能从上往下迭代.boolean hasNext(); 判断当前指针后是否有下一个元素Object next():获取指针的下一个元素,并且移动指针.ListIterator: 是Iterator接口的子接口,支持双向迭代,从上往下迭代,从下往上迭代.Enumeration...原创 2020-04-03 19:29:33 · 166 阅读 · 0 评论 -
Java基础知识--集合框架--list之Stack类
一.栈(Stack):数据结构的一种,存储特点:Last In First Out.Stack 类表示后进先出(LIFO)的对象栈.栈结构在生活中的体现:1):QQ消息. A,B,C三个人先后发送消息,我们查看的时候发现最顶上的是最新的消息.2):手枪弹夹的装和发射:要来实现栈的存储,底层可以数组来存储,也可以使用链表来存储.二.操作模型图三.源代码:四.常用方法因为操作的...原创 2020-04-01 21:03:32 · 284 阅读 · 0 评论 -
Java基础知识--集合框架--list之Vector类
一.介绍在JDK2之前(在Java的集合框架之前),要存储多个数据,此时存在一个叫Vector类.Vector类底层其实就是一个Object数组,Vector类中的方法是支持同步(方法使用synchronized修饰)的.二.vector的设计原理(查看源代码):三.Vector类存储原理:通过源码分析,发现在Vector类中有一个Object[]类型数组.protected Obj...原创 2020-04-01 20:43:12 · 138 阅读 · 0 评论 -
Java基础知识之集合框架的概述
一.Java集合框架的由来:其实在Java2(jdk1.2)之前,Java是没有完整的集合框架的。它只有一些简单的可以自扩展的容器类,比如Vector,Stack,Hashtable等。为什么存在容器类: 容器类(集合类)可以存储多个数据,既然数组可以存储多个数据,为什么需要定义容器类.数组的弊端:1):长度是不可变的,一旦数组初始化之后,长度是固定的.2):在N个地方需要存储多个数据,...原创 2020-04-01 18:23:54 · 142 阅读 · 0 评论 -
Java基础知识之ThreadLocal
一.ThreadLocal 变量定义:ThreadLocal 是Java里一种特殊的变量。每个线程都有一个 ThreadLocal 就是每个线程都拥有了自己独立的一个变量,竞争条件被彻底消除了。如果为每个线程提供一个自己独有的变量拷贝,将大大提高效率。首先,通过复用减少了代价高昂的对象的创建个数。其次,你在没有使用高代价的同步或者不变性的情况下获得了线程安全。二.API中的解释:该类提供了线...原创 2020-03-31 21:34:24 · 172 阅读 · 0 评论 -
Java基础知识之线程的生命周期及相关面试题
1原创 2020-03-31 20:41:06 · 227 阅读 · 0 评论 -
Java基础知识之线程通信和相关面试题
一.实际中需要线程之间的协作,比如说最经典的生产者-消费者模型:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待的期间内,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态。然后等待...原创 2020-03-31 18:31:31 · 168 阅读 · 0 评论 -
Java基础知识之线程同步的几种方式
1原创 2020-03-31 16:26:54 · 179 阅读 · 0 评论 -
Java基础知识之多线程并行执行上传图片操作
1原创 2020-03-30 23:29:07 · 747 阅读 · 0 评论 -
Java基础知识之线程和线程池及相关面试题
1原创 2020-03-30 23:01:06 · 135 阅读 · 0 评论 -
Java基础知识之BigDecimal
一BigDecimal概述Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。一般情况下,对于那些不需要准确计算精度的数字,我们可以直接使用Float和Double处理,但是Double.valueOf(String) 和Float...原创 2020-03-30 19:58:00 · 161 阅读 · 0 评论 -
Java之设计模式及相关面试题
一.由于设计模式过于复杂,这里没有自己去整理.可借鉴一下两篇文章.①JAVA设计模式总结之23种设计模式②23种设计模式深入解析总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式...原创 2020-03-30 19:19:07 · 230 阅读 · 0 评论 -
Java基础知识之日期类
1原创 2020-03-30 19:03:44 · 154 阅读 · 0 评论 -
Java中生成全局唯一(订单号)Id
int r1=(int)(Math.random()*(10));//产生2个0-9的随机数 int r2=(int)(Math.random()*(10)); long now = System.currentTimeMillis();//一个13位的时间戳 String paymentID0 =String.valueOf(r1)+String.va...原创 2020-03-26 22:35:06 · 1098 阅读 · 0 评论 -
Java基础知识之随机数
一.随机数①.Random类Random类用于生产一个伪随机数(通过相同的种子,产生的随机数是相同的)。public Random():使用默认的种子(以当前系统时间作为种子)。public Random(long seed):根据指定的种子。public class RandomDemo { public static void main(String[] args) { ...原创 2020-03-26 22:23:42 · 139 阅读 · 0 评论 -
Java基础知识之String及相关面试题
1原创 2020-03-26 20:49:39 · 185 阅读 · 0 评论 -
Java基础知识之枚举及相关面试题
1原创 2020-03-26 14:23:24 · 830 阅读 · 0 评论 -
Java基础知识之方法重载和方法重写的区别
一方法的重载设计(overload):重载方法的定义是在同一个类中,某方法允许存在一个以上的同名方法,只要它们的参数列表不同即可。方法重载的作用:屏蔽了同一功能的方法由于参数不同所造成方法名称不同。方法重载判断原则: “两同一不同”两同:同类中,方法名相同;一不同:方法参数列表不同(参数类型、参数个数、参数顺序);只要参数类型,参数个数,参数顺序有一个不同,参数列表就不同.注意:方法...原创 2020-03-26 13:36:31 · 287 阅读 · 0 评论 -
Java基础知识之单例模式及相关面试题
1原创 2020-03-25 21:08:31 · 297 阅读 · 0 评论 -
Java基础知识之数组及相关面试题
一.数组的定义:所谓数组,是在程序设计中,为了处理方便,把具有相同类型的若干变量按有序的形式组织起来的一种数据形式。这些按一定顺序排列的同类型数据的集合称为数组。而数组中的每一个数据称之为数组元素,数组中的元素以索引来表示其存放的位置,索引从0开始,步长是1.方式1: 数组元素的类型[] 数组名; int[] ages;推荐的. 可以吧int[]看成是一种数据类型,int类型的数组类型....原创 2020-03-25 20:15:48 · 393 阅读 · 0 评论 -
Java基础知识之开发中常见的异常
一.Java异常类层次结构图在 Java 中,所有的异常都有一个共同的祖先java.lang包中的 Throwable类。Throwable: 有两个重要的子类:Exception(异常) 和 Error(错误) ,二者常处理都是 Java 异的重要子类,各自都包含大量子类。Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编写者执行的操作无关,而表...原创 2020-03-16 14:41:30 · 161 阅读 · 0 评论 -
Java基础知识之JVM内存结构浅析及常见面试题
(1).Sun HotSpot VM,是JDK和Open JDK中自带的虚拟机,也是目前使用范围最广的Java虚拟机。(2).JVM内存分布程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,故该区域为线程私有的内存。虚...原创 2020-03-16 14:34:07 · 278 阅读 · 1 评论