<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[android_jackzhou的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/android_jackzhou</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; android_jackzhou]]></copyright><item><title><![CDATA[Java中==和equals的区别]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/124033739</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/124033739</guid><author>android_jackzhou</author><pubDate>Fri, 08 Apr 2022 09:41:28 +0800</pubDate><description><![CDATA[==运算符：

1, 可以使用在基本数据类型变量和引用数据类型中

2, 如果用在基本数据类型的比较中，比较两个变量保存的数据是否相等（不一定要类型相同，Java运算符会存在自动类型提升） 如果用在引用数据类型变量中，比较的是两个变量的地址值

比如 int i = 10, double y = 10.0，那么i==y会等于true

equals方法的使用：

1，是一个方法，不是运算符

2，只能用在引用数据类型中

3，object类中equals方法的定义，即类中不复写equals方法时的默认行为：]]></description><category></category></item><item><title><![CDATA[Java中不会触发类初始化的几个操作]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/124006300</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/124006300</guid><author>android_jackzhou</author><pubDate>Thu, 07 Apr 2022 09:46:07 +0800</pubDate><description><![CDATA[一，Java中不会触发类初始化的几个操作：

1，通过子类引用父类的静态字段，不会导致子类初始化

2，通过数组定义来引用类，不会触发此类的初始化

3，常量在编译阶段会存入调用类的常量池中，本质上没有直接引用到定义常量的类，因此不会触发定义常量的类的初始化。

4，当调用目标类的静态变量或静态方法时，不会触发该类的代码块或构造方法的执行



二，final类型的成员变量一定要初始化，可以在构造方法或者代码块中初始化final字段：


//构造方法初始化
class Person {
  pu...]]></description><category></category></item><item><title><![CDATA[Java中方法重写的权限修饰符]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123995801</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123995801</guid><author>android_jackzhou</author><pubDate>Wed, 06 Apr 2022 17:44:02 +0800</pubDate><description><![CDATA[子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符，子类不能重写父类中被private修饰的方法

1，对于返回值：父类是void，子类一定是void

如果父类是基本数据类型，子类只能是同样的基本数据类型

2，如果父类是A类型，则子类返回的只能是A类或者A类的子类

3，子类重写的方法抛出的异常类型不能大于父类被重写的方法抛出的异常类型

解释:在编译的时候的异常是父类定义的,如果子类抛出的异常比父类的大,在运行的时候执行的是子类的方法，就会有代码风险

4，子类和父类中的同名同参数的方法要么]]></description><category></category></item><item><title><![CDATA[Java中的多态]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123982785</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123982785</guid><author>android_jackzhou</author><pubDate>Wed, 06 Apr 2022 09:44:41 +0800</pubDate><description><![CDATA[在 Java 中实现多态有 3 个必要条件：

1，满足继承关系

2，要有重写

3，父类引用指向子类对象，编译看左边，运行看右边

对象的多态性只适用于方法，不适用于属性，属性的编译和运行都看左边

多态是运行时行为：


	重载是早绑定（静态绑定），编译期就确定了
	
	
	重写是晚绑定（动态绑定），运行时才确定
	
	
	重载不认为是多态,因为在编译期就确定了
	
多态的举例：


Object obj = 1;
System.out.println(obj);

输出的结果是1，我们都知道Ob..]]></description><category></category></item><item><title><![CDATA[Java中Long缓存]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123969061</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123969061</guid><author>android_jackzhou</author><pubDate>Tue, 05 Apr 2022 14:32:40 +0800</pubDate><description><![CDATA[Long 最被我们关注的就是 Long 的缓存问题，Long 自己实现了一种缓存机制，缓存了从 -128 到 127 内的所有 Long 值，如果是这个范围内的 Long 值，就不会初始化，而是从缓存中拿，缓存 初始化源码如下：


private static class LongCache {
    private LongCache(){}
    // 缓存，范围从-128到127，+1是因为有个0 
    static final Long cache[] = new Long[-(-128)]]></description><category></category></item><item><title><![CDATA[Java中的非法向前引用]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123966005</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123966005</guid><author>android_jackzhou</author><pubDate>Tue, 05 Apr 2022 10:58:01 +0800</pubDate><description><![CDATA[非法向前引用的例子：







那么为什么类似于i= "1234";这样的代码可以呢？这是因为Java对其中的某些情况做了“特许”，其中有一条就是“通过简单名称引用的变量可以出现在左值位置，但不能出现在右值的位置”，所以前面的代码可以，但System.out.println(i);不行，因为这是一个右值引用。

其目的是避免循环初始化和其他非正常的初始化行为。

什么是循环引用，看一下下面这个例子：

privateinti=j;

privateintj=i;

如果没有前面说的强制检查，那么这两句代]]></description><category></category></item><item><title><![CDATA[Java中的this关键字]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123949388</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123949388</guid><author>android_jackzhou</author><pubDate>Mon, 04 Apr 2022 10:05:52 +0800</pubDate><description><![CDATA[通常情况下，调用当前对象的属性或方法，省略this关键字，特殊情况下，比如方法(或者构造器)的形参和类的属性同名时，我们必须显示调用this.


String name;
​
public JTest(String name){
    this.name = name;
}

this调用构造器

1，我们在类的构造器中，可以显示的使用“this（形参列表）”方式，调用指定的本类的其他构造器

2，构造器中不能通过this（形参列表）方式调用自己

3，如果一个类中有n个构造器，那么最多有n-1个构造器]]></description><category></category></item><item><title><![CDATA[面向对象和面向过程的区别]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123922895</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123922895</guid><author>android_jackzhou</author><pubDate>Sat, 02 Apr 2022 16:12:23 +0800</pubDate><description><![CDATA[面向过程：强调的是功能行为，以函数为最小单位，考虑怎么做

面向对象：强调具备了功能的对象，以类/对象为最小单位，考虑谁来做

举例说明：人把大象塞到冰箱里

1：面向过程设计，开发三个函数

1）把冰箱门打开

2）抬起大象，塞进冰箱

3）把冰箱门关闭

2：面向对象设计，设计三个类，每个类有具体功能


class 人{
    打开（冰箱）{
        冰箱.开门();
    }
}
​
class 冰箱{
  开门();
}
​
class 大象{
    进入（）;
}
...]]></description><category></category></item><item><title><![CDATA[Java数组初始化和工具类的使用]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123917176</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123917176</guid><author>android_jackzhou</author><pubDate>Sat, 02 Apr 2022 12:03:25 +0800</pubDate><description><![CDATA[1，一维数组的初始化方式


1，int[] a = new int[]{1,2};
2，int[] b = new int[2];
3，int[] c = {1,2};//类型推断

2，二维数组的初始化方式


1，int[][] k = new int[i][j];
2, int[][] m = new int[3][];
3，int[][] n = new int[3][2];
动态初始化
int[][] k = {{},{},{},{}};
int[][] k = new int[][]{{},{]]></description><category></category></item><item><title><![CDATA[Scanner类中next()方法和nextLine()方法的区别]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123913713</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123913713</guid><author>android_jackzhou</author><pubDate>Sat, 02 Apr 2022 09:59:30 +0800</pubDate><description><![CDATA[Scanner类中next()方法和hasNext()方法的区别

从键盘输入值


Scanner scanner = new Scanner(System.in);
String next = scanner.next();
System.out.println(next);

next()方法只有扫描到有效字符后才会结束输入（用户没有输入的时候不会结束）；next()方法会自动去掉空白（例如回车、空格等），也不能得到带有空格的字符串；输入hello world，结果只会出来hello，空格以及后面的w]]></description><category></category></item><item><title><![CDATA[BigDecimal精度丢失问题]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123890218</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123890218</guid><author>android_jackzhou</author><pubDate>Fri, 01 Apr 2022 09:44:22 +0800</pubDate><description><![CDATA[使用BigDecimal的构造函数进行封装Double、Float型数值的时候，实际创建的值与我们期望的值会出现误差，因此在进行运算时会出现精度的丢失。如何避免：使用new BigDecimal(String);


public BigDecimal(double val)

1.此构造方法的结果有一定的不可预知性。有人可能认为在 Java 中写入 new BigDecimal(0.1) 所创建的 BigDecimal 正好等于 0.1，但是它实际上等于 0.10000000000000000555111]]></description><category></category></item><item><title><![CDATA[Java中为什么局部变量需要显式设置初始化值？]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123863412</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123863412</guid><author>android_jackzhou</author><pubDate>Thu, 31 Mar 2022 09:32:12 +0800</pubDate><description><![CDATA[对于成员变量而言，其赋值和取值访问的先后顺序具有不确定性。

比如在下面的代码中，name的赋值可以发生在调用dumpField方法之前，也可以发生在调用dumpField方法之后。这是在运行时发生的，在编译器来看确定不了的。





编辑切换为居中

添加图片注释，不超过 140 字（可选）

对于没把握的事情，javac是不会去做的，这种事情交给运行时的JVM就可以了。



编辑切换为居中

添加图片注释，不超过 140 字（可选）

而对于局部变量来说，其访问的先后顺序是确定的

假使局部变量可以]]></description><category></category></item><item><title><![CDATA[Java数据类型]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123838919</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123838919</guid><author>android_jackzhou</author><pubDate>Wed, 30 Mar 2022 09:57:57 +0800</pubDate><description><![CDATA[1，java数据类型

基本数据类型：

整型：byte/short/int/long（默认为int类型，默认值为0）

浮点型：float/double（默认为double类型，默认值为0.0）

字符型：char（默认值为‘\u0000’）

布尔型：boolean（boolean值占4个字节，boolean数组占1个字节，默认值为false）

引用类型：引用类型的默认值为null

类（class）

接口（interface）

数组（array）

2，浮点数叫法的由来：

浮点类...]]></description><category></category></item><item><title><![CDATA[JVM，Jdk和Jre的关系]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123821746</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123821746</guid><author>android_jackzhou</author><pubDate>Tue, 29 Mar 2022 15:00:35 +0800</pubDate><description><![CDATA[JRE中包含了JVM和Java的标准类库，比如我们常用的Java lang包下面的类就是放在标准类库中

JDK包含了JRE和一些开发工具集，比如我们常用的java，javac等命令









我们安装JDk的时候，会默认包含jre






...]]></description><category></category></item><item><title><![CDATA[Java中设置Path、classpath、JAVA_HOME的作用？]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/123819716</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/123819716</guid><author>android_jackzhou</author><pubDate>Tue, 29 Mar 2022 13:58:36 +0800</pubDate><description><![CDATA[Path：Windows系统在dos命令行中执行命令的时候，会先从当前路径去找，如果找不到，就会到path路径下查找，如果没有设置Path，那么执行java命令的时候只能进到jdk的安装目录里面才能执行，因为设置了Path，所以我们可以在系统的任意路径下面执行java命令





CLASSPATH：作用是指定类搜索路径，要使用已经编写好的类，前提是能够找到它们了，JVM就是通过CLASSPATH来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置.]]></description><category></category></item><item><title><![CDATA[SpringBoot学习笔记]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/78710195</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/78710195</guid><author>android_jackzhou</author><pubDate>Tue, 05 Dec 2017 16:22:25 +0800</pubDate><description><![CDATA[spring boot 启动方式：
1 直接在程序application类中执行run 
2.cd进入项目文件夹 执行 mvn spring-boot:run
3.cd进入项目文件夹 执行 mvn install （先对项目进行编译）, cd进入target文件夹会看到刚才生成的一个 xxx-0.0.1-SNAPSHOT.jar包， java -jar xxx-0.0.1-SNAPSHOT.ja]]></description><category></category></item><item><title><![CDATA[Maven]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/78464159</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/78464159</guid><author>android_jackzhou</author><pubDate>Tue, 07 Nov 2017 11:09:34 +0800</pubDate><description><![CDATA[Maven项目的目录约定

MavenProjectRoot(项目根目录)
   |----src
   |     |----main
   |     |         |----java ——存放项目的.java文件
   |     |         |----resources ——存放项目资源文件，如spring, hibernate配置文件
   |     |--]]></description><category></category></item><item><title><![CDATA[splice方法]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/78132632</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/78132632</guid><author>android_jackzhou</author><pubDate>Fri, 29 Sep 2017 12:13:01 +0800</pubDate><description><![CDATA[定义和用法


splice() 方法向/从数组中添加/删除项目，然后返回被删除的项目。

注释：该方法会改变原始数组。

语法
arrayObject.splice(index,howmany,item1,.....,itemX)




参数

描述



index

必需。整数，规定添加/删除项目的位置，使用负数可从数组结尾处规定位置。


]]></description><category></category></item><item><title><![CDATA[JPA 级联更新去孤子]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/78132437</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/78132437</guid><author>android_jackzhou</author><pubDate>Fri, 29 Sep 2017 11:47:08 +0800</pubDate><description><![CDATA[在是使用JPA(hibernate)配置实体关系中，经常会遇到通过父实体对象级联批量更新子对象的需求，而且每次更新必须采用合并方式，即原来的所有子删除，只保留本次保存的所有子实体对象。

例子：

A为父对象，持有一个B的集合，A与B的关系为oneToMany. 

第一次保存：设置A下的B集合成员为：1,2,3, 保存A后，B对象对应的数据表为:1,2,3

第二次保存：设置A下]]></description><category></category></item><item><title><![CDATA[Apache压力测试工具]]></title><link>https://blog.youkuaiyun.com/android_jackzhou/article/details/78054344</link><guid>https://blog.youkuaiyun.com/android_jackzhou/article/details/78054344</guid><author>android_jackzhou</author><pubDate>Thu, 21 Sep 2017 17:06:41 +0800</pubDate><description><![CDATA[打开Apache服务器的安装路径，在bin目录中有一个ab.exe的可执行程序，就是我们要介绍的压力测试工具。


























在Windows系统的命令行下，进入ab.exe程序所在目录，执行ab.exe程序。注意直接双击无法正确运行。

















]]></description><category></category></item></channel></rss>