java基础
文章平均质量分 82
程序员老石
当你的才华满足不了你的野心,你应该滚去学习
展开
-
Java开发中常见的坑
其实,这个问题出在Integer类型的参数,其实际传入值为null,JDK字段拆箱,调用了它的intValue方法导致的问题。也就是说,如果调用了Integer的equals方法,必须要求入参也是Integer类型,否则该方法会直接返回false。当我们用id=888的系统管理员账号登录之后,做了相关操作,满怀期待的准备收邮件的时候,却发现收了个寂寞。也就是说,只要有一个地方,把该引用对象的成员变量的值,做修改了,其他地方也会同步修改。根本原因过滤后的集合中,保存的是对象的引用,该引用只有一份数据。...原创 2022-07-20 10:13:55 · 624 阅读 · 0 评论 -
ConcurrentHashMap源码分析
ConcurrentHashMap关系图JDK1.7中的实现JDK1.7 中的ConcurrentHashMap采用了分段锁的设计,先来看一下它的数据结构。ConcurrentHashMap中含有几个Segment数组。每个Segment中又含有几个HashEntry数组。Segment是一种可重入锁,在ConcurrentHashMap里扮演锁的角色;HashEntry则用于存储键值对数据。一个ConcurrentHashMap里面包含多个Segment数组。Segment的结构和HashMa原创 2022-05-20 17:04:05 · 1343 阅读 · 0 评论 -
BIO、NIO、AIO 有什么区别
什么是I/O?I/O(Input/Outpu) 即输入/输出 。我们先从计算机结构的角度来解读一下 I/O。根据冯.诺依曼结构,计算机结构分为 5 大部分:运算器、控制器、存储器、输入设备、输出设备。从计算机结构的视角来看的话, I/O 描述了计算机系统与外部设备之间通信的过程。根据大学里学到的操作系统相关的知识:为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为 用户空间(User space) 和 内核空间(Kernel space )1、用户空间的程序不能直接访问内核空间当想要原创 2022-05-20 14:27:49 · 188 阅读 · 0 评论 -
Java中序列化和反序列化
什么是Java序列化与反序列化?1、序列化:Java中的序列化机制能够将一个实例对象信息写入到一个字节流中(只序列化对象的属性值,而不会去序列化方法),序列化后的对象可用于网络传输,或者持久化到数据库、磁盘中。2、反序列化:需要对象的时候,再通过字节流中的信息来重构一个相同的对象。3、实现序列化条件1)实现接口:Serializable标识接口2)对象所在的类提供常量:序列版本号。3)要求对象的属性也是可序列化的。(基本数据类型本身是可序列化的),注意被static修饰的、transient关键原创 2022-05-20 11:27:44 · 534 阅读 · 0 评论 -
Java中String字符串:空字符串、存放空的字符串、null的区别
Java中String字符串:空字符串、存放空的字符串、null的区别Java String字符串中有三种特殊的字符串:空字符串、存放空的字符串、字符串为Null,如下所示: String str1 = ""; String str2 = " "; String str3 = null;字符串str1表示空字符串,字符串str2表示存放空的字符串,字符串str3表示为null的字符串。那么他们的长度是多少以及他们调用isEmpty()函数的情况,本文原创 2022-05-20 10:18:29 · 2234 阅读 · 0 评论 -
Java实现对象的克隆方式
Java实现对象克隆的方法1、Java实现克隆有两种形式浅拷贝深拷贝在Java中吗,我们说两个对象是否相等通常有两层含义:对象的内容是否相等,通常使用到对象的 equals(Object o) 函数;引用的地址是否相同,使用运算符 == 比较即可。当两个对象通过赋值符号 = 赋值时,表明这两个对象指向了内存中同一个地址,所以改变其中一个对象的内容,也就间接地改变了另一个对象的内容。有时候,我们需要从一个已经存在的对象重新拷贝一份出来,并且不仅这两个对象内容相等,在内存中存在两个独立的存原创 2022-05-19 17:15:19 · 10769 阅读 · 0 评论 -
java基础篇 -java是值传递还是引用传递
2、java是值传递还是引用传递?Java 有两种数据类型,一种是基本类型,比如说 int,另外一种是引用类型,比如说 String。基本类型的变量存储的都是实际的值,而引用类型的变量存储的是对象的引用——指向了对象在内存中的地址。值和引用存储在 stack(栈)中,而对象存储在 heap(堆)中。 基本数据类型作为参数传递时,传递的是值的拷贝,无论怎么改变这个拷贝,原值是不会改变的。栈的优势是,存取速度比堆要快,仅次于直接位于CPU 中的寄存器。但缺点是,栈中的数据大小与生存周期必须是确定的原创 2022-05-19 10:58:47 · 375 阅读 · 0 评论 -
Java基础 - Object类常用方法
1、==与 equals() 的区别==运算符:1)作用于基本数据类型时,是比较两个数值是否相等;2)作用于引用数据类型时,是比较两个对象的内存地址是否相同,即判断它们是否为同一个对象;equals()方法1)类没有覆盖/重写 equals() 方法时,则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象的内存地址是否相同。2)类覆盖/重写 equals() 方法时,一般会按照对象的内容来进行比较,若两个对象内容相同则认为对象相等,否则认为对象不等。pu原创 2022-05-19 00:07:29 · 804 阅读 · 0 评论 -
Java基础 - Object类常用方法
1、==与 equals() 的区别==运算符:1)作用于基本数据类型时,是比较两个数值是否相等;2)作用于引用数据类型时,是比较两个对象的内存地址是否相同,即判断它们是否为同一个对象;equals()方法1)类没有覆盖/重写 equals() 方法时,则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象的内存地址是否相同。2)类覆盖/重写 equals() 方法时,一般会按照对象的内容来进行比较,若两个对象内容相同则认为对象相等,否则认为对象不等。pu原创 2022-05-19 00:07:29 · 804 阅读 · 0 评论 -
Java基础 - Integer和int的区别
一、int和Integer的区别两者的区别主要体现在以下几个方面:1、数据类型不同:int 是基础数据类型,而 Integer 是包装数据类型;2、默认值不同:int 的默认值是 0,而 Integer 的默认值是 null;3、内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向此对象;4、实例化方式不同:Integer 必须实例化才可以使用,而 int 不需要;5、变量的比较方式不同:原创 2022-05-18 22:31:40 · 33962 阅读 · 0 评论 -
POJO类中属性必须使用包装数据类型
在阿里巴巴Java开发手册中,对于POJO中如何选择变量的类型也有着一些规定:这里强制要求使用包装类型,原因是什么呢?1、我们来看一段简单的代码public class BooleanMainTest { public static void main(String[] args) { Model model1 = new Model(); System.out.println("default model : " + model1); }}原创 2022-05-03 11:04:53 · 1520 阅读 · 0 评论 -
Java基础 - servlet(一)
1、servlet应用实例1、客户端提交一个表单数据访问服务端的整个流程图: 客户端访问add.html页面并通过Http Request携带表单请求数据,通过web.xml中的映射关系,找到AddServlet类中的doPost方法,并执行该方法。2、编写一个add.html表单提交页面<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title&原创 2022-04-11 23:03:43 · 1199 阅读 · 1 评论 -
java基础 - 反射机制
1、Java反射机制概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。1.1 Java反射机制提供的功能在运行时判断任意一个对象原创 2022-04-07 23:41:42 · 153 阅读 · 0 评论 -
Java - 泛型
1、使用泛型中出现的类型转换问题 @Test public void test1(){ ArrayList list = new ArrayList(); list.add(78); list.add(74); list.add(76); list.add(79); // 问题一:类型不安全 list.add("Tom"); for (Object score : li原创 2022-04-03 19:53:00 · 583 阅读 · 0 评论 -
java基础 - 异常篇
01、异常概述与异常体系结构在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美,在系统的运行过程中仍然会遇到一些问题,因为很多问题不是靠代码能够避免的,比如:客户输入数据的格式,读取文件是否存在,网络是否始终保持通畅等等。在Java语言中,将程序执行中发生的不正常情况称为“异常”。(开发过程中的语法错误和逻辑错误不是异常)Java程序在执行过程中所发生的异常事件可分为两类:1.1 Error:Java虚拟机无法解决的严重问题JVM系统内部错误、资源耗尽等严重情况。比如:栈溢出(St原创 2022-03-22 21:17:07 · 106 阅读 · 0 评论 -
Java基础 - String字符串系列
1、String特性String是final类,代表不可变的字符序列字符串是常量,用双引号引起来表示,它们的值在创建之后不能更改。String对象的字符内容是存储在一个字符数组value[]中的。String声明为final的,不可被继承。String实现了Serializable接口,表示字符串是支持序列化的。String实现了Comparable接口,表示String可以比较大小。String:代表不可变的字符序列。简称:不可变性 体现: 1、当对字符串重新赋值时,原创 2022-03-21 22:57:59 · 564 阅读 · 0 评论 -
java中Get与Post请求
一、post和get的区别1、传送方式:get通过地址栏传输,post通过报文传输。2、传送长度:get参数有长度限制(受限于url长度),而post无限制3、GET和POST还有一个重大区别,简单的说:GET产生一个TCP数据包;POST产生两个TCP数据包长的说: 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); 而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送dat原创 2022-03-20 16:14:55 · 7680 阅读 · 0 评论