Java基础
Java基础知识
六十三吖
代码也是我生活的一部分
展开
-
Springboot集成flywaydb(以及解决加载顺序问题)
一、Springboot集成flywaydb引入依赖<dependency> <groupId>org.flywaydb</groupId> <artifactId>flyway-core</artifactId> <version>5.0.3</version> </dep...原创 2020-04-21 10:40:18 · 4394 阅读 · 1 评论 -
HashMap存自定义对象为什么要重写 hashcode 和 equals 方法?
HashMap的k放过自定义对象么?当我们把自定义对象存入HashMap中时,如果不重写hashcode和equals这两个方法,会得不到预期的结果。class Key{ private Integer id; public Integer getId() { return id; } public Key(Integer id) { ...转载 2019-10-31 19:58:18 · 484 阅读 · 0 评论 -
接口和抽象类
接口和抽象类转载 2018-08-02 21:15:16 · 108 阅读 · 0 评论 -
字符串
转载:http://www.cnblogs.com/chenssy/p/3426642.html 一、String 首先我们要明确,String并不是基本数据类型,而是一个对象,并且是不可变的对象。查看源码就会发现String类为final型的(当然也不可被继承),而且通过查看JDK文档会发现几乎每一个修改String对象的操作,实际上都是创建了一个全新的String对象。...转载 2018-08-05 20:11:06 · 127 阅读 · 0 评论 -
反射
理解:应用场景一般创建对象是自己new的,程序相当于写死了给jvm去跑。假如一个服务器上突然遇到某个请求哦要用到某个类,哎呀但没加载进jvm,是不是要停下来自己写段代码,new一下,哦启动一下服务器,(脑残)!反射是什么呢?当我们的程序在运行时,需要动态的加载一些类这些类可能之前用不到所以不用加载到jvm,而是在运行时根据需要才加载,这样的好处对于服务器来说不言而喻,举个例子我们的项目底层...转载 2018-08-05 16:20:33 · 161 阅读 · 0 评论 -
Class对象理解
转载:https://blog.csdn.net/javazejian/article/details/70768369 RRTI的概念以及Class对象作用认识Class对象之前,先来了解一个概念,RTTI(Run-Time Type Identification)运行时类型识别,对于这个词一直是 C++ 中的概念,至于Java中出现RRTI的说法则是源于《Thinking in J...转载 2018-08-05 14:50:54 · 1016 阅读 · 0 评论 -
java键盘输入Scanner
Java Scanner 类java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入。下面是创建 Scanner 对象的基本语法:Scanner s = new Scanner(System.in);接下来我们演示一个最简单的的数据输入,并通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串,...转载 2018-07-31 17:18:10 · 361 阅读 · 0 评论 -
内部类详解
转载:https://www.cnblogs.com/hysum/p/7101974.html我们知道内部类可分为以下几种:成员内部类 静态内部类 方法内部类 匿名内部类这里我们先将以这个分类来详细了解各个内部类的情况。然后给内部类作出总结。一、成员内部类 内部类中最常见的就是成员内部类,也称为普通内部类。我们来看如下代码: 运行结果为: 从上...转载 2018-08-03 16:26:06 · 148 阅读 · 0 评论 -
java内存模型和内存区域以及执行过程理解
内存模型和内存区域java代码执行流程\静态代码块,静态变量等加载顺序转载 2018-07-24 21:55:32 · 457 阅读 · 0 评论 -
StringTokenizer类与String.split()的区别
一、StringTokenizer:字符串分隔解析类型属于:java.util包。1、构造函数。1. StringTokenizer(String str) :构造一个用来解析str的StringTokenizer对象。java默认的分隔符是“空格”、“制表符(‘\t’)”、“换行符(‘\n’)”、“回车符(‘\r’)”。2. StringTokenizer(String str, St...转载 2018-07-18 19:22:49 · 1175 阅读 · 0 评论 -
关于空指针异常的思考
在Java中对值为null的指针调用任何方法,就会引发空指针异常(java.lang.NullPointerException)。原创 2018-07-18 17:54:49 · 136 阅读 · 0 评论 -
对象比较
判断两个对象是否相等时: 使用 == 进行比较, 该方式比较的是变量是否同时指向一块内存地址,如果是就返回true,否则返回false 使用对象本身的equals进行比较,equals首先会进行 == 比较,然后会进行逻辑比较,当然你可以自己定义自己的比较逻辑,比如JDK内置的String,Integer,Long等都是重写了这个equals方法的。 总的来说就是 == ...转载 2018-07-28 11:34:03 · 109 阅读 · 0 评论 -
foreach原理
import java.util.ArrayList;import java.util.Iterator;import java.util.List;/** * @author Created By 谭健:本类用于解释Foreach循环的实现原理 * * @about 新形式的遍历虽然好用,但是他丢掉了索引信息。当你需要访问数组或者集合的下标,你将不能使用fore...转载 2018-08-06 17:39:56 · 567 阅读 · 0 评论 -
封装、继承、多态
封装继承多态转载 2018-08-02 21:14:19 · 261 阅读 · 0 评论 -
彻底理解String、StringBuffer和StringBuilder
区别: StringBuilder和StringBuffer的内部实现跟String类一样,都是通过一个char数组存储字符串的,不同的是String类里面的char数组是final修饰的,是不可变的,而StringBuilder和StringBuffer的char数组是可变的。1. StringBuilder为什么线程不安全查看JDK源码,知道append()方法public S...转载 2019-09-29 11:22:24 · 101 阅读 · 0 评论 -
迭代器
概述Java集合框架的集合类,我们有时候称之为容器。容器的种类有很多种,比如ArrayList、LinkedList、HashSet…,每种容器都有自己的特点,ArrayList底层维护的是一个数组;LinkedList是链表结构的;HashSet依赖的是哈希表,每种容器都有自己特有的数据结构。因为容器的内部结构不同,很多时候可能不知道该怎样去遍历一个容器中的元素。所以为了使对容器内元素的操作...转载 2019-09-24 16:38:36 · 105 阅读 · 0 评论 -
Java编码问题
转载:https://www.cnblogs.com/zj0208/p/7019102.html详细参考:https://blog.csdn.net/troyaninpc/article/details/79476751第一个问题:我在java代码中定义了一个字符串,它是什么编码?字符串实质是一个char数组。那么char的编码,其实就是字符串的编码。那么char什么编码呢?为什么...转载 2019-06-28 11:02:21 · 119 阅读 · 0 评论 -
java序列化
转载:https://blog.csdn.net/leixingbang1989/article/details/50556966以前一直搞不明白序为什么要设计序列化这样一个接口,今天看了下别人的博客以及对应的视频教程,总算搞明白了,特此写下此篇博客。一 序列化是干什么的?我们知道,在jvm中引用数据类型存在于栈中,而new创建出的对象存在于堆中。如果电脑断电那么存在于内存中的对...转载 2019-04-17 11:40:33 · 97 阅读 · 0 评论 -
java异常
转载:https://www.cnblogs.com/knightsu/p/7114914.html 一、异常简介什么是异常?异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域的情况,称之为异常。java中异常的体系是怎么样的呢?1.Java中的所有不正常类都继承于Throwable类。Throwable主要包括两个大类,一个是Error类...转载 2018-08-27 20:04:58 · 182 阅读 · 0 评论 -
IO详解(最后包括了序列化和反序列化)
java IO详解转载 2018-08-17 16:28:42 · 145 阅读 · 0 评论 -
泛型
转载:https://blog.csdn.net/s10461/article/details/53941091/ 泛型原理浅析1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型编程是一种通过参数化的方式将数据处理与数据类型解耦的技术,通过对数据类型施加约束(比如Java中的有界类型)来...转载 2018-08-12 19:06:10 · 131 阅读 · 0 评论 -
java泛型问题分析
转载:https://baijiahao.baidu.com/s?id=1590433913335343847&wfr=spider&for=pc Java泛型(Generic) 的引入加强了参数类型的安全性,减少了类型的转换,它与C++中的模板(Temeplates) 比较类似,但是有一点不同的是:Java的泛型在编译器有效,在运行期被删除,也就是说所有的泛型参数类型在编...转载 2018-08-12 18:36:10 · 287 阅读 · 0 评论 -
Java中Date与String的相互转换
我们在注册网站的时候,往往需要填写个人信息,如姓名,年龄,出生日期等,在页面上的出生日期的值传递到后台的时候是一个字符串,而我们存入数据库的时候确需要一个日期类型,反过来,在页面上显示的时候,需要从数据库获取出生日期,此时该类型为日期类型,然后需要将该日期类型转为字符串显示在页面上,Java的API中为我们提供了日期与字符串相互转运的类DateForamt。DateForamt是一个抽象类,所以平...转载 2018-05-26 15:46:25 · 151 阅读 · 0 评论 -
java不同访问修饰符总结
1、类的修饰符分为:可访问控制符和非访问控制符两种。 可访问控制符是:公共类修饰符 public非访问控制符有:抽象类修饰符 abstract ;最终类修饰符 final1 )公共类修饰符 public : Java 语言中类的可访问控制符只有一个: public 即公共的。每个 Java 程序的主类都必须是 public 类作为公共工具供其它类和程序使用的应定义为 public 类。2 )抽象类...转载 2018-05-03 21:31:37 · 451 阅读 · 0 评论 -
java的主方法类中static的思考
对于static定义的方法,可以用类名调用,也可用对象调用,这是因为在程序运行的时候,static内存空间就已经分配好了。使用static的优点: 1.一个静态属性在堆内存只能存在一个,即大家可以共享该属性值。 2.如果一个对象数组中其中的某人属性大家都是相同的,即可以使用静态,这样可以节省内存空间。 3.静态一旦创建,生命周期就会从创建开始到该程序结束才会死亡。 4.静态依赖于类,而不是对象。 ...原创 2018-03-26 08:38:25 · 350 阅读 · 0 评论 -
java关于多态的几个问题解析
java中的多态和继承---"编译看左边,运行看右边"(多态执行) java转型 java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象。什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) 、向下转型(downcasting).举个例子:有2个类,Father是父类,Son类继承自Father。Fath...转载 2018-03-30 11:19:31 · 370 阅读 · 0 评论 -
java语法基础
java基础语法java中关于输出:一次输出多个变量:变量+“”+变量命名规则:* 项目名统一小写 * 标识符只能是 字母、下划线、数字、$ 且第一个字母不能为数字* Java语言中,标识符大小写敏感,必须区别对待。* 标识符没有最大长度的限制,但最好表达特定的意思。* 标识符定义不能是关键字逻辑构成 Java源程序逻辑构成分为两大部分:程序头包的引用和类的定义。 程序头包的...原创 2018-03-13 11:52:34 · 581 阅读 · 0 评论 -
实现日历
package mainclass;public class mainclass { public static void main(String []argv) { for(int month=1;month<=12;month++) { int week=0; int day=0; switch(month) { case 1: w...原创 2018-03-19 10:38:21 · 129 阅读 · 0 评论 -
java实现验证码
package triangle_make;public class MainClass { public static void main(String []args) { for(int i=0;i<4;i++) { int number=(int)(Math.random()*26); //randon()产生0到1之间的数字,不包括1 int numb...原创 2018-03-22 16:49:57 · 101 阅读 · 0 评论 -
java随机数的生成
Java产生随机数的三种方式在Java中,随机数的概念从广义上讲,有三种。 1、通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字。 2、通过Math.random()方法返回一个0到1之间的double值。 3、通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大。Math.random()方法Math.ra...转载 2018-03-26 08:43:10 · 1516 阅读 · 0 评论 -
java最全的概念与知识点总结
java概念知识点总结 一、基础语法java内存模型和内存区域以及执行过程理解 特例: 基本类型(八大基本类型(boolean、char、byte、short、int、long、float、double) 1) 因为对于一些小的、简单的变量,在new中创建对象往往不是很有效,于是设置了基本类型 2) java中所有不带小数点的类型都默认是int类型,带小数点的默认类型为doubl...原创 2018-05-06 17:36:56 · 7614 阅读 · 2 评论 -
java构造函数super()方法思考
这个是Java的规定:子类继承父类,子类的构造方法必须调用super()即父类的构造方法,而且必须放在构造方法的第一行。那么问题又来,为什么我写的类有时候都不用去调用父类的构造方法?因为:如果父类"只"有无参构造方法,且不打算重写子类的构造方法,为节省代码量,子类构造方法可以不写,但是实际上是已经写了,系统默认调用父类无参构造方法super(),即默认会在子类的构造方法中的第一行加上父类的无参构造...转载 2018-03-29 17:27:40 · 12118 阅读 · 0 评论 -
java测试运行时间方法
long startTime=System.currentTimeMillis();long endTime=System.currentTimeMillis(); //此方法可以保存当前程序运行到当前位置所用的时间原创 2018-04-16 20:19:06 · 1403 阅读 · 0 评论 -
java文件和目录操作
package com.zhiyou101;import java.io.File;import java.io.IOException;public class FileClass { public static void main(String[] args) { test5(); } public static void test5() { // 重命名 两个文件...原创 2018-04-16 20:15:12 · 383 阅读 · 0 评论 -
java访问控制符
Java提供了3个访问控制符:private、protected和public,分别代表了3个访问控制级别,另外还有一个不加任何访问控制符的访问控制级别,提供了4个访问控制级别。Java的访问控制级别由小到大如图所示: 图中4个访问控制级别中的default并没有对应访问控制符,当不使用任何访问控制符来修饰类或类成员时,系统默认使用该访问控制级别。这4个访问控制级别的详细介绍如下。p...转载 2018-03-28 11:29:15 · 108 阅读 · 0 评论 -
Java中子类继承了父类的私有属性及方法吗?
子类拥有父类所有的属性和方法,于是使用程序去验证,发现父类的私有属性和私有方法,子类是不能访问的,当然一些父类的私有属性可能可以通过相应的方法访问到,但是私有的方法似乎不能简单的访问,这里暂不考虑Java反射机制,于是我分析,子类不能继承父类私有的属性及方法,但是分析了内存后,我发现我是错的,在一个子类被创建的时候,首先会在内存中创建一个父类对象,然后在父类对象外部放上子类独有的属性,两者合起来形...原创 2018-03-27 21:32:25 · 1661 阅读 · 0 评论 -
java中多态中向上转型和向下转型的思考
为什么要存在向下转型?因为子类除了有父类的方法,也可以有自己额外的方法。这些方法是基类所没有的。一旦向上转型,就不能调用子类中的新方法。必须用别的方式调用这些新方法。这需要向下。...原创 2018-04-02 20:39:45 · 178 阅读 · 0 评论 -
java自增机制
public static void main(String[] args) { int j=0; for(int i=0;i<100;i++){ j=j++; } System.out.println(j); } 按C语言中自增运算的理解,该程序最终应该打印出100。...原创 2018-03-15 10:22:44 · 445 阅读 · 0 评论