Java基础知识
记录Java基础需要学习的内容以及平时遇到的问题解决方法
ClearlightY
欢迎访问个人网站: clearlight.com.cn
展开
-
Java中基础知识点
Java运算符优先级运算符结合性[ ] . ( ) (方法调用)从左向右! ~ ++(自加) --(自减) +(正) -(负)从右向左* / %从左向右+(加) -(减)从左向右<< >> >>>(移位)从左向右< <= > >= (比较运算符) instanceof...原创 2019-07-27 23:58:13 · 4247 阅读 · 6 评论 -
Java集合框架 - List接口
List接口List是有序的Collection。Java List一共三个实现类:分别是ArrayList、Vector和LinkedList。Vector类和ArrayList不同,Vector中的操作是线程安全的原创 2019-06-30 17:46:25 · 330 阅读 · 3 评论 -
Java编码规范
一. 书写代码规范包名: 多单词组成时所有字母都小写: xxxbbbyyy类名 接口名: 多单词组成时, 所有单词的首字母大写: XxxYyyZzz变量名 方法名: 多单词组成时, 第一个单词首字母小写, 第二个单词开始每个单词首字母大写: xxxYyyyZzzz常量名: 所有字母都大写. 多单词时每个单词用下划线连接: XXXX_YYYY_ZZZZ二. 编码思想规范合理组织代码层次,分层清晰:controller、logic、dao、对第三方接口(包括公司接口)的调用;各层要继承基类或转载 2021-08-04 19:57:23 · 404 阅读 · 0 评论 -
Java刪除字符串中最后一个字符
使用函數 substring(開始位置, 截取的長度);String str = "1.A001_2.A002_3.A003_";str = str.substring(0,str.length()-1);System.out.println("str的內容: " + str);輸出內容:str的內容:1.A001_2.A002_3.A003原创 2021-06-17 18:16:48 · 530 阅读 · 0 评论 -
Oracle中SQL语句转换为Java字符串拼接的形式 -- Java
对于很长的SQL, Java中查询数据使用字符串拼接的形式, 如果手动去拼接将十分耗时, 通过下面Java工具类, 可以自动在每行两侧添加双引号, 最后添加分号, 并且SQL中存在注释的位置-- 将会使用Java//注释掉, 这样只要专心写好sql, 在变量的位置手动修改一下就可以直接粘贴到代码中.package cn.com.clearlight.JavaUtilsimport java.io.*;/** * 寫好的 SQL要站到代碼中, 每行需要添加引號, 該類可以直接給每行開頭和末尾去除空原创 2021-03-16 15:39:37 · 477 阅读 · 0 评论 -
Java中指定小数位数进行四舍五入处理方法 - Java
/** * 提供精确的小数位四舍五入处理,显示指定格式数字。 * * @param d * 需要四舍五入的数字 * @param scale * 小数点后保留几位 * @return (string型) 四舍五入后的结果 */ public static String roundString(double d, int scale) { if (scale < 0) { throw new IllegalArg.原创 2021-01-25 18:01:03 · 583 阅读 · 0 评论 -
Java获取指定日期或当前日期的上个月份或其他月份的日期 - Java
对于传入的日期或者当前日期, 想要获得 上个月或者下下个月的日期, 可以调用下面的方法, 当然想要获得上年或者下一年, 原理相同, 稍微修改代码即可适用. /** * 返回傳入日期的前或后第n个月的日期, 如果 lisdate 为now, 则代表当前日期 * * eg: ("2020-12-11", 1) -> 2020-11-11; ("2020-12-11", 2) -> 2020-02-11 * * @param yearmonth * @return *原创 2020-12-24 20:04:30 · 3825 阅读 · 1 评论 -
Java中多个Double类型的数进行计算 - Java
Java中Double类型的加减 - Java, 这篇文章只是简单的两个数的运算, 如果要是多个浮点数进行计算, 显然要多次调用方法才可以实现.为了解决这个问题, 专门写了一个方法来取出繁杂的操作./** * 適用多個數進行累加,累乘或者減除減去多個數,除數除以多個數, 其中第二個參數為減數或者除數, * * @param operation: + || - || * || / * @param v: the first is divisor or subtrahend, The ba原创 2020-12-24 19:52:49 · 563 阅读 · 2 评论 -
Java中Double类型的加减 - Java
前提: Double类型的加减直接进行加减将会损失精度, 这样就会造成bug, 正规应该使用BigDecimal类进行运算使用平常加减出现的bug:解决方法:public static Double BigDecimalCal(Double d1,String operation,Double d2){ BigDecimal bd = new BigDecimal("0"); if(d1!=null && d2!=null){ if("+".equ.原创 2020-11-25 20:57:16 · 3466 阅读 · 0 评论 -
Junit 加了@Test 方法无法运行
把添加了@Test方法的static修饰符去掉! 这样就可以运行添加@Test的方法了… …原创 2019-11-12 19:20:28 · 2099 阅读 · 0 评论 -
Junit测试 - Java
通过使用@Test方式, 可以省去每次都要写main方法来进行测试某个方式是否满足要求.Junit操作步骤定义一个测试类(测试用例)包名 : xx.xxx.xx.test (eg : cn.clearlight.test)测试类名 : 被测试的类名Test(eg : CalTest)定义测试方法 : 可以独立运行方法名 : test + 测试的方法名(eg : testGe...原创 2019-11-04 19:05:25 · 231 阅读 · 0 评论 -
创建线程为何只有一种方式? - Java
创建多线程可以使用下面四种方式:继承Thread实现Runnable接口通过Callable和FutureTask创建线程通过线程池创建线程代码演示package top.clearlight.blog.hollis.thread;import java.util.concurrent.Callable;import java.util.concurrent.Executio...原创 2019-10-19 20:52:30 · 634 阅读 · 1 评论 -
Java多线程笔记(二)
文章目录1. 并发,并行概念2. 进程,线程概念3. 类变量, 成员变量, 局部变量4. 线程安全5. 并发编程中,最重要的三个特性6. 线程状态的转换7. Java同步块8. 线程通信9. Thread.join()[参考文献]1. 并发,并行概念并发(concurrent) : 一个时间段有多个程序都处于已启动运行的运行完毕之间,且这几个程序都是在同一个处理机上运行.并行(pa...原创 2019-10-17 16:01:33 · 166 阅读 · 0 评论 -
Java多线程学习笔记(一)
源出处 : Java教程 多线程 - 廖雪峰一、中断线程通过调用interrupt方法来中断线程,isInterrupt来获取当前线程是否已中断,true表示线程中断如果线程处于等待状态, 该线程会捕获InterruptedException二、守护线程1.setDaemon方法如何变为守护线程?想要变为守护线程的线程通过调用setDaemon方法并设置为true即可.public...原创 2019-10-13 11:23:00 · 244 阅读 · 0 评论 -
抽象类与接口总结 - Java
继承抽象类若继承抽象类的子类并未实现抽象类中的所有抽象方法,那么该子类必须也是抽象类,即必须用abstract修饰.实现接口原创 2019-09-07 17:40:08 · 402 阅读 · 0 评论 -
反射机制总结 - Java
文章目录一、反射的作用二、反射的用法2.1 类2.1.1 修饰符2. 1.2 类名2.1.3 继承的父类2.1.3 实现的接口2.1.4 包信息2.2 变量2.2.1 特定变量2.2.2 变量类型和变量名2.3 构造器2.3.1 获取Constructor对象以及对象的参数列表2.3.2 利用Constructor对象实例化一个类2.4 方法2.4.1 获取类中所有方法2.4.2 调用指定方法2....原创 2019-09-07 09:53:48 · 284 阅读 · 0 评论 -
Java关键字 - instanceof
一、instanceof介绍用法 : 引用变量 instance 类名(接口)作用 :它的作用是测试它左边的对象是否是它右边的类的实例,返回boolean的数据类型。二、instanceof案例package top.clearlight.coretech.keyword;import java.util.AbstractList;import java.util.ArrayLis...原创 2019-09-05 17:18:24 · 259 阅读 · 0 评论 -
Java反射 - 创建数组实例
对于创建非数组实例,可以看这篇文章 : Java反射 - [实例演示] 创建类的对象多种方式一、创建数组实例public class ReflectTest{ public static void main(String[] args) { String[] strArr = (String[]) Array.newInstance(String[].class.getCompon...原创 2019-09-03 09:33:58 · 673 阅读 · 0 评论 -
[报错信息] : java.lang.NoSuchMethodException: java.lang.Integer.init() - Java反射创建对象出现
一、报错信息Exception in thread "main" java.lang.InstantiationException: java.lang.Integer at java.lang.Class.newInstance(Class.java:427) at top.clearlight.coretech.reflect.ReflectTest.main(ReflectTest.j...原创 2019-08-22 14:42:53 · 10441 阅读 · 0 评论 -
Java反射 - 通过反射创建有参与无参构造函数的对象
一、问题分析反射机制 : 指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有属性和方法。反射可以创建类的对象.newInstance()方法可以创建类的实例.那么拥有该方法除了Class类之外,还有Constructor类.可是,Class类中的newInstance()方法只能创建默认构造器的对象,想要创建有参的构造函数还是要使...原创 2019-08-22 14:39:17 · 3606 阅读 · 0 评论 -
Java反射 - [实例演示] 创建类的对象多种方式
Java通过反射可以创建类的对象创建类的对象方式除了new,Class.newInstance()这两种方式可以创建共有的构造函数的对象外还可以通过Constructor类来设置反射对象的accessible标志为true,来创建私有构造器类的对象.反射定义反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有属性和方法...原创 2019-08-20 18:12:30 · 1189 阅读 · 0 评论 -
参数数量可变的方法 - Java
导语:对于public static void changeVarLength(String ... str) { ...; }这种形式参数都见到过吧,后面就会将参数数量可变的方法需要注意的事项进行讲解,通过举例来实际证明.一、可变参数的定义在jdk 1.5 之后 , 方法的参数可以通过省略号...来作为一部分 , 即(String ... str) , 这种形式其实是语法糖 , 实际上...原创 2019-08-20 10:53:32 · 4201 阅读 · 1 评论 -
Java三大特性之多态
时间久了不用就会忘记,特此记录一下文中部分引用内容来自:java提高篇(四)-----理解java的三大特性之多态多态的定义多态就是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的实例对象,该引用变量发出的方法调用到底是哪个类中实现的方法,必须在由程序运行期间才能决定。因为在程序运行时才确定具...原创 2019-08-09 23:47:55 · 260 阅读 · 0 评论 -
初始化块、静态代码块、构造函数的运行顺序 - Java
在类中同时拥有初始化块,静态代码块时,代码运行的顺序是怎样的?创建对象时是先调用构造器么?下面根据写的demo来探究Java创建对象时代码的运行顺序.原创 2019-08-09 15:48:51 · 290 阅读 · 0 评论 -
LinkedHashMap类 - 实现购物车案例
程序简单,但是实现了购物车的基本原理.通过选购,修改已购商品的数量,删除已购商品以及清空购物车这些基本功能的实现.一、产品类public class Product { private int productId; private String productName; private String category; private float pri...原创 2019-08-04 17:25:09 · 787 阅读 · 0 评论 -
HashMap集合遍历的四种方式
对于Map来说,遍历的方式都是一样的,大概都是有四种形式直接遍历返回keySet()返回Values()返回entrySet()对于第四种方式可能会除了返回的可以直接打印外,还可以通过返回Map.Entry类来依次遍历该集合返回key和value值import java.util.*;public class HashMapDemo { public static...原创 2019-08-04 17:12:42 · 2382 阅读 · 2 评论 -
Java集合汇总(全)
本篇文章主要对Java集合框架进行介绍,对之前的内容的一个总结. 本文具体介绍了Collection接口,Map接口.该文只是把平时常见的集合类总结到了一起.一、Java集合类之间的继承上图是集合框架的继承图(图片来源:Java集合类: Set、List、Map、Queue使用场景梳理.)上图是常用类的框架图.后面将会对每个类的优缺点进行详细介绍二、集合类的优缺点(XM...原创 2019-08-03 22:25:44 · 1107 阅读 · 0 评论 -
Java算法总结 - 从易到难
一、获取数字中的每一位int i = 58713;个位 : i % 10;十位 : i / 10 % 10;百位 : i / 10 / 10 % 10;千位 : i / 1000 % 10;万位 : i / 10000 % 10;二、元素值使用随机数生成(范围为i~j)Random r = new Random();int num = r.nextInt(j - i + 1) ...原创 2019-08-01 10:59:40 · 508 阅读 · 0 评论 -
Java - IO流详解
IOIO流用来处理设备之间的数据传输Java对数据的操作是通过流的方式Java用来操作流的对象都在IO包中流按操作数据分为两种 : 字节流与字符流流按流向分为 : 输入流, 输出流输入输出定义内存 – 硬盘(外设)内存->硬盘 : 输出(写)硬盘->内存 : 输入(读)将外设中的数据读取到内存中 : 输入将内存中的数据写入到外设中 : 输出字节流的由来...原创 2019-06-30 17:30:05 · 168 阅读 · 0 评论 -
Java_Web实战(一) --环境搭建
一、准备工具MySQL、eclipse、tomcat二、MySQL安装好mysql后,记录好用户名和密码.本人mysql用户名:root 密码:sa启动mysql服务:net start mysql停止mysql服务:net stop mysql登录MySQL:进入cmd窗口登录mysql格式:mysql -u用户名 -p密码本人:mysql -uroot -psa3....原创 2019-06-26 00:15:13 · 6306 阅读 · 0 评论 -
List接口 — ArrayList类源码分析
package java.util;import java.util.function.Consumer;import java.util.function.Predicate;import java.util.function.UnaryOperator;import sun.misc.SharedSecrets;/** * Resizable-array implementat...原创 2019-06-21 20:30:11 · 206 阅读 · 0 评论 -
Stack类的介绍
源码分析package java.util;/** * Stack类表示后进先出,(LIFO)对象堆栈。它使用5个操作扩展了类 Vector, * 这些操作允许将向量视为堆栈。提供了通常的 push和 pop操作, * 以及在堆栈顶部项目中peek的方法, empty方法表示测试堆栈是否为为空, * 以及一种在堆栈中搜索项目的方法,并发现它与顶部的距离。 * * 首次创建堆栈时...原创 2019-06-16 18:17:49 · 652 阅读 · 0 评论 -
向TreeSet中添加自定义对象的两种比较方法
一、问题分析对于TreeSet类,假如添加对象的类中不实现Comparable接口重写compareTo方法或者TreesSet创建对象未传入自定义的比较类的话,那么运行时将会报错!Exception in thread "main" java.lang.ClassCastException: cn.com.clearlight.setframe.set.bean.Student canno...原创 2019-06-16 17:28:34 · 2637 阅读 · 3 评论 -
向HashSet中添加自定义对象如何区别添加的对象
一、问题来源当向HashSet中添加String类型的数据时,如果同时添加两个相同的字符串,那么实际上只能添加一个,因为HashSet不允许添加相同的元素.二、问题分析问题来了,HashSet是如何区别两个对象(String类型的数据是引用数据类型)的?浅显的说,String重写了Object类的equals方法和hashCode方法.因此,在比较的时候,HashSet调用了Stri...原创 2019-06-16 16:24:09 · 1129 阅读 · 0 评论 -
[报错信息] : java.util.ConcurrentModificationException - Java集合操作出现
前言List集合操作时有时候会出现 java.util.ConcurrentModificationException,翻译过来就是并发修改异常.先看Java API 中对于ConcurrentModificationException是如何介绍的.当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。多线程操作时出现 : 某个线程在 Collection 上进行迭代时,通常不允...原创 2019-06-09 23:40:42 · 793 阅读 · 0 评论 -
toArray()和toArray(T[ ] a)的比较 - Vector类
toArray()和toArray(T[ ] a)的比较两者的功能都是 : 返回一个数组,包含此向量中以恰当顺序存放的所有元素很明显两个方法的参数不同.那么对于toArray(T[ ] a)中的参数数组的作用是什么呢?通过源码来分析toArray()源码 protected Object[] elementData; public synchronized Object[] to...原创 2019-06-08 17:44:22 · 1312 阅读 · 0 评论 -
List接口 — Vector类源码分析
Vector的源码理解起来不难,Vector是由数组来实现的,对于增删改查也是数组的相关操作源码中只保留了重要的代码,删去了部分代码(包的导入与英文注释)Vector类的声明1public class Vector<E> extends AbstractList<E> implements List<E>, RandomAccess, ...原创 2019-06-08 15:40:26 · 222 阅读 · 0 评论 -
Java中数组复制的常见方法
https://www.cnblogs.com/zhengbin/p/5671403.html原创 2019-05-23 17:44:00 · 2373 阅读 · 0 评论 -
进制转换-Java中自带方法解析
Integer类Integer.parseInt(String s, int radix)Integer.toString(int i, int radix)Integer.valueOf(String s, int radix)原创 2019-05-22 20:23:21 · 367 阅读 · 0 评论 -
Integer类型和int类型相等的值是否相等? - Java
概要java当中,对于"=="符号肯定不陌生,总的来讲:==比较的是值是否相等相关文章:Java中==与equals()方法的区别基本数据类型:数值大小是否相等引用数据类型:对象的引用地址的值是否相等可是,int i0 = 59;Integer i1 = new Integer(59);i0 == i1 ; 是否相等呢?第一感觉肯定认为是false;可是经测试结果为true....原创 2019-05-17 21:20:25 · 10117 阅读 · 1 评论