![](https://img-blog.csdnimg.cn/20190829092119785.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java基础
文章平均质量分 90
参照书籍《明解Java》,主要以程序的形式展示
姜皓
胸藏文墨怀若谷 腹有诗书气自华
展开
-
BigDecimal踩坑总结&最佳实践
本篇文章介绍了BigDecimal使用中场景的坑,以及基于这些坑我们得出的“最佳实践”。虽然某些场景下推荐使用BigDecimal,它能够达到更好的精度,但性能相较于double和float,还是有一定的损失的,特别在处理庞大,复杂的运算时尤为明显。故一般精度的计算没必要使用BigDecimal。而必须使用时,一定要规避上述的坑。最后我强烈推荐使用Money,Money在使用时能够自动避免上述很多坑,在一定程度能够避免异常以及金融方面的资损。...转载 2022-07-25 10:46:02 · 1760 阅读 · 0 评论 -
Java 源码剖析(25)--生产环境如何排除和优化 JVM
垃圾回收算法1)如何判断一个对象是否“死亡”2)垃圾回收的算法有哪些?3)GC Roots死亡对象判断说到 Java 虚拟机不得不提的一个词就是 “垃圾回收”(GC,Garbage Collection),而垃圾回收的执行速度则影响着整个程序的执行效率。1)如何判断一个对象是否“死亡”垃圾回收器首先要做的就是,判断一个对象是存活状态还是死亡状态,死亡的对象将会被标识为垃圾数据并等待收集器进行清除。判断一个对象是否为死亡状态的常用算法有两个:引用计数器算法和可达性分析算法。引用计数算法(Refere原创 2020-09-23 15:51:28 · 326 阅读 · 0 评论 -
JavaWeb学习(13)--JSP快速入门
JSP快速入门1)JSP快速入门指令注释内置对象2)MVC:开发模式jsp演变历史MVC1)JSP快速入门指令作用:用于配置JSP页面,导入资源文件;格式:<%@ 指令名称 属性名1=属性值1 属性名2=属性值2 … %>;分类:1)page:配置JSP页面contentType:等同于response.setContentType();1.设置响应体的mime类型以及字符集2.设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEnco原创 2020-05-20 18:19:27 · 204 阅读 · 0 评论 -
JavaWeb学习(12)--Session快速入门
Session快速入门1)Session快速入门2)Session细节2.1 当客户端关闭后,服务器不关闭,两次获取session是否为同一个?2.2 客户端不关闭,服务器关闭后,两次获取的session是同一个吗?2.3 session什么时候被销毁?1)Session快速入门代码:https://gitee.com/jianghaok/Login.git1)概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中(HttpSession);2) 快速入门2.1 )原创 2020-05-19 14:46:34 · 176 阅读 · 0 评论 -
JavaWeb学习(11)--JSP改造Cookie案例
JSP改造Cookie案例1)JSP入门学习2)JSP改造Cookie案例1)JSP入门学习代码:https://gitee.com/jianghaok/Login.git概念:Java Server Pages,java服务器端页面;可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码,用于简化书写!!!原理:JSP本质上就是一个Servlet,图解如下:JSP脚本:JSP定义Java代码的方式;<% 代码 %>:定义的java代码,在ser原创 2020-05-19 13:51:15 · 154 阅读 · 1 评论 -
JavaWeb学习(10)--Cookie快速入门
Cookie快速入门1)会话技术2)Cookie入门3)Cookie细节4)Cookie的特点和作用5)Cookie案例1)会话技术代码:https://gitee.com/jianghaok/Login.git会话:一次会话中包含多次请求和响应;一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止;功能:在一次会话的范围内的多次请求间,共享数据;方式:1)Cookie:客户端会话技术【数据存储在客户端】;2)Session:服务器端会话技术【数据存储在服务器端】2)原创 2020-05-18 21:12:30 · 196 阅读 · 0 评论 -
JavaWeb学习(09)--Response对象与ServletContext对象
HTTP&&Response对象&&ServletContext对象1)HTTP协议2)Response对象功能3)案例完成重定向特点路径写法服务器输出字符数据到浏览器服务器输出字节数据到浏览器验证码4)ServletContext对象5)文件下载案例需求分析步骤问题1)HTTP协议代码:https://gitee.com/jianghaok/Login.git概念:Hyper Text Transfer Protocol 超文本传输协议传输协议:定义了客户端原创 2020-05-16 17:05:10 · 184 阅读 · 0 评论 -
JavaWeb学习(08)--用户登录案例实战
用户登录案例实战1)用户登录案例需求2)开发步骤分析1)用户登录案例需求1.编写login.html登录页面 :username & password 两个输入框2.使用Druid数据库连接池技术,操作mysql,day14数据库中user表3.使用JdbcTemplate技术封装JDBC4.登录成功跳转到SuccessServlet展示:登录成功!用户名,欢迎您5.登录失败跳...原创 2020-05-06 20:52:23 · 439 阅读 · 0 评论 -
Java线程--概念与原理
Java线程概念与原理操作系统中线程和进程的概念Java线程的实现形式继承Thread类实现Runnable接口使用Callable和Future接口创建线程。操作系统中线程和进程的概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是...转载 2019-11-08 10:26:48 · 225 阅读 · 0 评论 -
详解面试中常考的 Java 反射机制
详解面试中常考的 Java 反射机制反射(Reflection)是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性和方法。关于反射,常见的面试考察点包括:如何反射获取 Class 对象如何反射获取类中的所有字段如何反射获取类中的所有构造方法如何反射获取类中的所有非构造方法反射是什么?反射...转载 2019-11-01 17:49:37 · 410 阅读 · 0 评论 -
Java中的事务及使用
Java中的事务及使用什么是事务?为什么要事务?事务的4个特性(ACID):Java有几种类型的事务?1.JDBC事务2.JTA事务1)JTA的构成2)JTA的主要接口位于javax.transaction包中3)JTA编程的基本步骤JTA的优缺点:3、Spring容器事务1)、Spring JDBC事务2)、Hibernate事务3)、Java持久化API事务(JPA)什么是事务?事务(Tr...转载 2019-10-29 10:00:12 · 742 阅读 · 0 评论 -
Java--【IO流】IO流学习总结
Java IO流学习总结IO是指对数据流的输入和输出,也称为IO流,IO流主要分为两大类,字节流和字符流。字节流可以处理任何类型的数据,如图片,视频等;字符流只能处理字符类型的数据。【IO流的本质是数据传输,并且流是单向的】Java流操作有关的类或接口Java流类图结构IO流的分类字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作...转载 2019-10-23 11:18:26 · 176 阅读 · 0 评论 -
22、方法的参数传递
方法的参数传递方法,必须有其所在类或对象调用才有意义。若方法含有参数:形参:方法声明时的参数实参:方法调用时实际传给形参的参数值Java里方法的参数传递方式只有一种:值传递:即将实际参数值的副本(复制品)传入方法内,而参数本身不受影响一、JVM的内存模型1)引用对象Person p = new Person();new 一个 Person类对象 p 在 JVM...原创 2019-10-19 17:59:37 · 299 阅读 · 0 评论 -
23、Java基础---异常处理
异常处理一、异常类Java中提供了众多的异常类,各种异常类之间的层次关系如图所示:图中最上位的Throwable类为Object类的子类,另外,Throwable、Error、Exception都属于java.lang包。Throwable 类Throwable位于异常类的层次结构的顶端。也就是说,Java中所有的异常类都是它的下位类。因此存在如下规则:1)当声明catch...原创 2019-10-02 13:12:26 · 278 阅读 · 0 评论 -
22、Java基础---异常
异常一、什么是异常所谓异常就是与程序预期的情况不一致的状态, 或者在通常情况下难以预料的状态package com.example;// 读入两个整数值,并显示加减乘除运算的结果import java.util.Scanner;class ArithInt { public static void main(String[] args) { Scanner stdIn...原创 2019-10-02 11:37:59 · 167 阅读 · 0 评论 -
21、Java基础---字符串数组和命令行参数
字符串数组和命令行参数一、字符串数组下面程序会将字符串数组的各个元素初始化为"Turbo" 、"NA" 、"DOHC"并显示:package com.example;// 字符串数组class StringArray1 { public static void main(String[] args) { String[] sx = {"Turbo", "NA", "DOH...原创 2019-09-27 09:18:08 · 864 阅读 · 0 评论 -
20、Java基础---字符串和String
字符串和String一、字符串和字符串常量字符串常量"ABC"是字符串常量的一个示例,字符串常量是用双引号括起来的字符序列,字符序列即为拼写的内容;双引号中也可以不是字符,无字符的" "是由0个字符构成的字符串常量String型变量String s = "ABC";是使用String型变量表示字符串的一个示例,String类并不是从基本类型(int、double等内置类型),而...原创 2019-09-27 00:16:24 · 300 阅读 · 0 评论 -
19、Java基础---字符
字符一、字符人类和计算机之间传递信息时必不可少的一项内容就是字符。人类通过拼写和发音来识别字符,而计符机则使用赋给各个字符的整数值,即“编码”来识别字符;字符通过整数值编码来表示并被识别Unicode字符编码有很多种,Java采用的是Unicode,Unicode采用下述方针来创建字符编码体系:• 将特有的编号赋给所有字符• 不依赖于平台• 不依赖于程序• 不依赖于语言...原创 2019-09-26 22:22:56 · 173 阅读 · 0 评论 -
18、Java基础---接口的派生
接口的派生一、接口的派生与类的派生可以继承资产相同,接口也可以通过派生来继承资产,即可以在已有的遥控器设计图的基础上创建更强大的遥控器设计图,可以在Player遥控器中加上"慢放” 按钮,来创建一个ExPlayer遥控器,如图:接口ExPlayer 直接继承了Player的资产play按钮和stop按钮,并新添加了用于慢放的slow按钮;声明接口时需要加上extends派生源的接口...原创 2019-09-26 21:32:28 · 952 阅读 · 0 评论 -
2、Java基础---数组
数组1、创建数组通过该声明创建的a是被称为数组变量(array variable)的特殊变量对数组主体中的各个构成元素的访问(读写)是通过将相当于号码的索引(index)赋入[]中进行的:数组变量名[索引]索引是表示从首个构成元素开始的第几个构成元素的int型整数值,由于首个构成元素的索引是0,因此各个构成元素从开头开始,可以按照a[O] 、a[l] 、a[2] 、a[3]...原创 2019-09-05 23:41:59 · 639 阅读 · 0 评论 -
3、Java基础---方法
方法1、方法的声明1)方法头:描述了方法的名称和规格;返回类型:指的是自我调用的控件, 即返回值(return value, 方法中返回的数值)的类型;方法名:方法的名称,方法就是通过该名称与其他控件进行调用的;形参列表:方法中将用于接收 "辅助指示" 的变量即形参, 放在小括号中进行声明 。2)方法体:方法体就是程序块(即用大括号括起来的0条以上的语句的集合)方法m...原创 2019-09-08 00:08:41 · 310 阅读 · 0 评论 -
4、Java基础---操作数组的方法
操作数组的方法一、计算最大值的方法计算最高者的身高和最胖者的体重:import java.util.Scanner;class MaxOfHeightWeight { //--- 计算并返回数组a中的最大值 ---// static int maxOf(int[] a) { int max = a[0]; for (int i = 1...原创 2019-09-08 11:40:38 · 348 阅读 · 0 评论 -
5、Java基础---重载
重载为多个非常相似的方法分别赋予不同的名称会导致程序中出现大量的名称,重载,对不同的方法赋予相同名称;一、方法的重载所谓方法的重载,就是在同—个类中定义多个相同名称的方法,因此,在不同类中定义相同名称的方法并不是重载。所谓方法的签名,就是方法名和形参的个数、类型的组合Java允许一个类中存在多个相同名称的方法,同一个类中声明多个相同名称的方法称为重载方法,不过,也存在 ”相同...原创 2019-09-08 16:43:36 · 163 阅读 · 0 评论 -
6、Java基础---类
类表示方法及其处理的数据对象的集合的结构就是类,类是比方法更大一级的控件,是面向对象编程中最基本的技术一、数据操作操作两个人的银行账户数据的程序:class Accounts { public static void main(String[] args) { String adachiAccountName = "A"; // A的账户名 ...原创 2019-09-11 00:15:34 · 189 阅读 · 0 评论 -
7、Java基础---类的独立
类的独立一、类的独立为了便于创建和使用类,应该将各个类实现为相对独立的源文件。通过创建 “car” 类来理解, car类中将下述数据设置为字段:如果只考虑字段, 汽车类Car可以像下面这样进行声明:class Car { private String name; // 名称 private int width; // 宽度 private int height; ...原创 2019-09-12 00:11:26 · 491 阅读 · 0 评论 -
8、Java基础---创建日期类
创建日期类一、日期类日期是通过年、月、日这三项来表示的。我们来创建一个日期类,将这些项定义为int型字段;如果将类命名为Day, 只考虑字段的话,可以像下面这样进行声明;类Day的内容如图所示:将所有的字段都设为私有(private) 外部访问可以通过构造函数和方法间接执行。二、构造函数和方法构造函数是在创建实例时为了正确进行初始化而设置的控件;类Day的构造函数的定义如下...原创 2019-09-15 22:30:24 · 5839 阅读 · 0 评论 -
9、Java基础---类类型的字段
类类型的字段一、类类型的字段public class Car { private String name; // 名称 private int width; // 宽度 private int height; // 高度 private int length; // 长度 private double x; // 当前位置的X坐标 private doubl...原创 2019-09-16 00:15:50 · 1108 阅读 · 0 评论 -
10、Java基础---类变量
类变量一、类变量(静态字段)之前介绍的字段,即实例变量, 都是属于类的各个实例的数据;本节将介绍表示同一个类的实例之间共享数据的静态字段,即类变量。给之前的“银行账户类” 的各个实例中添加一个“标识编号” ,每创建一个实例,例,就为其赋上1, 2, 3 ... 的连续整数值。创建实例后,aaa的标识编号为1,bbb的标识编号为2.。// A的账户Account aaa = new ...原创 2019-09-19 22:40:36 · 146 阅读 · 0 评论 -
11、Java基础---类方法
类方法一、类方法向日期类中添加判断"闰年” 的方法,即如下所示的两种方法:1)判断任意年份:判断任意年份(如2017年)是否是闰年;2)判断任意日期:判断日期类的实例年份(例如,设置为2017年1O月15日的日期的年份2017年)是否是闰年;方法1不是针对特定实例设置的,它不属于特定的实例,这一点与类变量(静态字段)相同,适合用来实现这种处理的就是被称为类方法的静态方法;与特...原创 2019-09-20 00:04:45 · 239 阅读 · 0 评论 -
12、Java基础---类初始化器和实例初始化器
类初始化器和实例初始化器一、类初始化器(静态初始化器)我们来回忆一下上一篇创建的类Id,每创建一个类的实例,都会为其赋上连续的标识编号1、2、3······这里对该类进行修改,使得标识编号的开始编号并不是1, 而是一个随机数值, 程序如下:// 标识编号类(通过随机数来设定开始编号)import java.util.Random;class RandId { private...原创 2019-09-22 11:45:37 · 1087 阅读 · 1 评论 -
13、Java基础---继承
继承本节将介绍继承已有类的资产来创建新类的技术---类的派生一、银行账户类在之前介绍类时创建了银行账户类Account[Java基础---类] ,修改程序,使其能表示"定期存款":添加如下所示的字段和方法:• 表示定期存款余额的字段• 确认定期存款余额的方法• 解除定期存款, 全部转为普通存款的方法添加了上述字段和方法的带有定期存款的银行账户类TimeAccount如下所示:...原创 2019-09-24 18:18:55 · 266 阅读 · 0 评论 -
14、Java基础---多态
多态一、方法的重写类Pet (宠物)字段:name --宠物的名字 / masterName --主人的名字;构造函数:Pet--设置宠物和主人的名字;方法:getName---确认宠物名字的方法(name的getter方法)getMasterName---确认主人名字的方法(masterName的getter方法)introduce ---进行自我介绍的方法[如图]:...原创 2019-09-24 23:52:17 · 344 阅读 · 0 评论 -
15、Java基础---继承和访问属性
继承和访问属性在类的派生中, 字段和方法会被继承, 但构造函数不会被继承,这里详细介绍一下在类的派生中. 哪些资产可以披继承. 哪些资产不可以被继承, 以及它们的访问属性又会变成什么祥。一、成员在类的派生中,只有类的成员可以被继承, 类的成员如下所示:1、字段2、方法3、类4、接口【不是指一般的类和接口,而是类中声明的类和接口】超类中的成员会被直接继承,不过具有私有访问属性...原创 2019-09-25 09:23:50 · 294 阅读 · 0 评论 -
16、Java基础---抽象类
抽象类一、抽象类首先考虑“点” 和“长方形”这两个图形,这两个类中都有用于绘图的方法draw;下面来设计这两个类。点类Point这是表示点的类,不持有字段。方法draw的实现如下,只显示一个符号字符'+'void draw() { System.out.println ('+');}长方形类Rectangle这是表示长方形的类,持有表示长和宽的int型字段width和...原创 2019-09-25 22:57:51 · 634 阅读 · 0 评论 -
17、Java基础---接口
接口一、接口接口是引用类型的一种,与类相似但也存在诸多不同;如果将类比作“电路的设计图”,那么接口就是“遥控器的设计图”接口声明这里以视频播放器、CD播放器、DVD播放器等播放器(播放设备)为例进行讲解,所有的播放器都可以执行“播放” 和“停止” 等操作;虽然播放器的实际运行各不相同, 但遥控器有"播放按钮” 和“停止按钮” 这一点是共通的。共通部分的遥控器如图a,将"Play...原创 2019-09-26 00:19:01 · 374 阅读 · 0 评论 -
1、Java基础--运算和类型
运算和类型1、计算两个整数值的实数平均值(错误)import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); System.out.println("计算...原创 2019-08-30 22:39:49 · 479 阅读 · 0 评论