- 博客(37)
- 收藏
- 关注
原创 Java中==和equals的区别
==运算符:1, 可以使用在基本数据类型变量和引用数据类型中2, 如果用在基本数据类型的比较中,比较两个变量保存的数据是否相等(不一定要类型相同,Java运算符会存在自动类型提升) 如果用在引用数据类型变量中,比较的是两个变量的地址值比如 int i = 10, double y = 10.0,那么i==y会等于trueequals方法的使用:1,是一个方法,不是运算符2,只能用在引用数据类型中3,object类中equals方法的定义,即类中不复写equals方法时的默认行为:
2022-04-08 09:41:28
470
原创 Java中不会触发类初始化的几个操作
一,Java中不会触发类初始化的几个操作:1,通过子类引用父类的静态字段,不会导致子类初始化2,通过数组定义来引用类,不会触发此类的初始化3,常量在编译阶段会存入调用类的常量池中,本质上没有直接引用到定义常量的类,因此不会触发定义常量的类的初始化。4,当调用目标类的静态变量或静态方法时,不会触发该类的代码块或构造方法的执行二,final类型的成员变量一定要初始化,可以在构造方法或者代码块中初始化final字段://构造方法初始化class Person { pu...
2022-04-07 09:46:07
655
原创 Java中方法重写的权限修饰符
子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符,子类不能重写父类中被private修饰的方法1,对于返回值:父类是void,子类一定是void如果父类是基本数据类型,子类只能是同样的基本数据类型2,如果父类是A类型,则子类返回的只能是A类或者A类的子类3,子类重写的方法抛出的异常类型不能大于父类被重写的方法抛出的异常类型解释:在编译的时候的异常是父类定义的,如果子类抛出的异常比父类的大,在运行的时候执行的是子类的方法,就会有代码风险4,子类和父类中的同名同参数的方法要么
2022-04-06 17:44:02
1061
原创 Java中的多态
在 Java 中实现多态有 3 个必要条件:1,满足继承关系2,要有重写3,父类引用指向子类对象,编译看左边,运行看右边对象的多态性只适用于方法,不适用于属性,属性的编译和运行都看左边多态是运行时行为: 重载是早绑定(静态绑定),编译期就确定了 重写是晚绑定(动态绑定),运行时才确定 重载不认为是多态,因为在编译期就确定了 多态的举例:Object obj = 1;System.out.println(obj);输出的结果是1,我们都知道Ob..
2022-04-06 09:44:41
287
原创 Java中Long缓存
Long 最被我们关注的就是 Long 的缓存问题,Long 自己实现了一种缓存机制,缓存了从 -128 到 127 内的所有 Long 值,如果是这个范围内的 Long 值,就不会初始化,而是从缓存中拿,缓存 初始化源码如下:private static class LongCache { private LongCache(){} // 缓存,范围从-128到127,+1是因为有个0 static final Long cache[] = new Long[-(-128)
2022-04-05 14:32:40
1397
原创 Java中的非法向前引用
非法向前引用的例子:那么为什么类似于i= "1234";这样的代码可以呢?这是因为Java对其中的某些情况做了“特许”,其中有一条就是“通过简单名称引用的变量可以出现在左值位置,但不能出现在右值的位置”,所以前面的代码可以,但System.out.println(i);不行,因为这是一个右值引用。其目的是避免循环初始化和其他非正常的初始化行为。什么是循环引用,看一下下面这个例子:privateinti=j;privateintj=i;如果没有前面说的强制检查,那么这两句代
2022-04-05 10:58:01
354
原创 Java中的this关键字
通常情况下,调用当前对象的属性或方法,省略this关键字,特殊情况下,比如方法(或者构造器)的形参和类的属性同名时,我们必须显示调用this.String name;public JTest(String name){ this.name = name;}this调用构造器1,我们在类的构造器中,可以显示的使用“this(形参列表)”方式,调用指定的本类的其他构造器2,构造器中不能通过this(形参列表)方式调用自己3,如果一个类中有n个构造器,那么最多有n-1个构造器
2022-04-04 10:05:52
268
原创 面向对象和面向过程的区别
面向过程:强调的是功能行为,以函数为最小单位,考虑怎么做面向对象:强调具备了功能的对象,以类/对象为最小单位,考虑谁来做举例说明:人把大象塞到冰箱里1:面向过程设计,开发三个函数1)把冰箱门打开2)抬起大象,塞进冰箱3)把冰箱门关闭2:面向对象设计,设计三个类,每个类有具体功能class 人{ 打开(冰箱){ 冰箱.开门(); }}class 冰箱{ 开门();}class 大象{ 进入();}...
2022-04-02 16:12:23
91
原创 Java数组初始化和工具类的使用
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[][]{{},{
2022-04-02 12:03:25
775
原创 Scanner类中next()方法和nextLine()方法的区别
Scanner类中next()方法和hasNext()方法的区别从键盘输入值Scanner scanner = new Scanner(System.in);String next = scanner.next();System.out.println(next);next()方法只有扫描到有效字符后才会结束输入(用户没有输入的时候不会结束);next()方法会自动去掉空白(例如回车、空格等),也不能得到带有空格的字符串;输入hello world,结果只会出来hello,空格以及后面的w
2022-04-02 09:59:30
512
原创 BigDecimal精度丢失问题
使用BigDecimal的构造函数进行封装Double、Float型数值的时候,实际创建的值与我们期望的值会出现误差,因此在进行运算时会出现精度的丢失。如何避免:使用new BigDecimal(String);public BigDecimal(double val)1.此构造方法的结果有一定的不可预知性。有人可能认为在 Java 中写入 new BigDecimal(0.1) 所创建的 BigDecimal 正好等于 0.1,但是它实际上等于 0.10000000000000000555111
2022-04-01 09:44:22
1045
原创 Java中为什么局部变量需要显式设置初始化值?
对于成员变量而言,其赋值和取值访问的先后顺序具有不确定性。比如在下面的代码中,name的赋值可以发生在调用dumpField方法之前,也可以发生在调用dumpField方法之后。这是在运行时发生的,在编译器来看确定不了的。编辑切换为居中添加图片注释,不超过 140 字(可选)对于没把握的事情,javac是不会去做的,这种事情交给运行时的JVM就可以了。编辑切换为居中添加图片注释,不超过 140 字(可选)而对于局部变量来说,其访问的先后顺序是确定的假使局部变量可以
2022-03-31 09:32:12
374
原创 Java数据类型
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,浮点数叫法的由来:浮点类...
2022-03-30 09:57:57
121
原创 JVM,Jdk和Jre的关系
JRE中包含了JVM和Java的标准类库,比如我们常用的Java lang包下面的类就是放在标准类库中JDK包含了JRE和一些开发工具集,比如我们常用的java,javac等命令我们安装JDk的时候,会默认包含jre...
2022-03-29 15:00:35
4724
原创 Java中设置Path、classpath、JAVA_HOME的作用?
Path:Windows系统在dos命令行中执行命令的时候,会先从当前路径去找,如果找不到,就会到path路径下查找,如果没有设置Path,那么执行java命令的时候只能进到jdk的安装目录里面才能执行,因为设置了Path,所以我们可以在系统的任意路径下面执行java命令CLASSPATH:作用是指定类搜索路径,要使用已经编写好的类,前提是能够找到它们了,JVM就是通过CLASSPATH来寻找类的.class文件。我们需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置.
2022-03-29 13:58:36
672
原创 SpringBoot学习笔记
spring boot 启动方式:1 直接在程序application类中执行run 2.cd进入项目文件夹 执行 mvn spring-boot:run3.cd进入项目文件夹 执行 mvn install (先对项目进行编译), cd进入target文件夹会看到刚才生成的一个 xxx-0.0.1-SNAPSHOT.jar包, java -jar xxx-0.0.1-SNAPSHOT.ja
2017-12-05 16:22:25
338
原创 Maven
Maven项目的目录约定MavenProjectRoot(项目根目录) |----src | |----main | | |----java ——存放项目的.java文件 | | |----resources ——存放项目资源文件,如spring, hibernate配置文件 | |--
2017-11-07 11:09:34
212
原创 splice方法
定义和用法splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。注释:该方法会改变原始数组。语法arrayObject.splice(index,howmany,item1,.....,itemX)参数描述index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
2017-09-29 12:13:01
665
转载 JPA 级联更新去孤子
在是使用JPA(hibernate)配置实体关系中,经常会遇到通过父实体对象级联批量更新子对象的需求,而且每次更新必须采用合并方式,即原来的所有子删除,只保留本次保存的所有子实体对象。例子:A为父对象,持有一个B的集合,A与B的关系为oneToMany. 第一次保存:设置A下的B集合成员为:1,2,3, 保存A后,B对象对应的数据表为:1,2,3第二次保存:设置A下
2017-09-29 11:47:08
692
原创 Apache压力测试工具
打开Apache服务器的安装路径,在bin目录中有一个ab.exe的可执行程序,就是我们要介绍的压力测试工具。在Windows系统的命令行下,进入ab.exe程序所在目录,执行ab.exe程序。注意直接双击无法正确运行。
2017-09-21 17:06:41
310
原创 JS中call和apply方法
1、方法定义call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象。 说明: call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 如果没有提供 thisObj 参数,那
2017-09-21 15:30:32
192
转载 Windows 下Npm和NodeJS升级
前提电脑中已经安装过NodeJS, npm。现在需要进行升级操作。1、查看当前的npm和NodeJs的版本:C:\Users\Administrator>node -vv4.4.3C:\Users\Administrator>npm -version2.15.12、升级npm:C:\Users\Administrator>npm
2017-09-21 10:06:33
332
原创 cmd启动安卓模拟器
学习React Native需要用到安卓模拟器,但是之前一直都是打开Android Studio在打开模拟器,费时,所以想用cmd命令行的形式来启动。执行命令:emulator @你的模拟器名称但是出现如下错误:../emulator/qemu/darwin-x86_64/qemu-system-x86_64 没有该命令或者目录 解决方式:将path配置的:~
2017-09-18 12:02:31
4020
原创 JavaScript 计时时间
要使用 clearInterval() 方法, 在创建计时方法时你必须使用全局变量:myVar=setInterval("javascript function",milliseconds);然后你可以使用clearInterval() 方法来停止执行。var myVar=setInterval(function(){myTimer()},1000);fun
2017-09-12 09:42:44
362
原创 JavaScript Boolean
如果布尔对象无初始化值或者其值为:0-0null""falseundefinedNaN那么对象的值为false,否则,其值为true(即使当自变量为字符串“false”时)
2017-09-12 09:39:18
167
原创 JavaScript Array
在一个数组中你可以有不同的对象所有的JavaScript变量都是对象。数组元素是对象,函数是对象。因此,你可以在数组中有不同的变量类型。你可以在一个数组中包含对象元素,函数,数组Arr[0] = Date.now;Arr[1] = myFunction;Arr[2] = myCars;
2017-09-12 09:36:16
182
原创 事件冒泡与事件捕获
事件传递有两种方式:冒泡与捕获。事件传递定义了元素事件触发的顺序。如果你讲元素插入到中,用户点击元素,那个元素的click事件先被触发呢?在冒泡中,内部元素的事件先被触发,然后在触发外部元素。在捕获中,外部元素的事件先被触发,然后在触发内部元素。addEventListener()方法可以指定useCapture参数来设置传递类型:addEventListener(even
2017-09-12 09:31:58
309
原创 addEventListener
addEventListener()方法用于向指定元素添加事件句柄。addEventListener()方法添加的事件句柄不会覆盖已存在的事件句柄。你可以向同一个元素添加多个事件句柄。你可以向同个元素添加多个同类型的事件句柄。如:两个click事件。你可以向任何DOM对象添加事件监听,不仅仅是HTML元素,如:window对象。addEventListener()方法可以更
2017-09-12 09:25:05
693
转载 JS闭包
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。下面就是我的学习笔记,对于Javascript初学者应该是很有用的。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全
2017-09-11 18:24:43
163
转载 JS变量和函数提升
一、变量提升 在ES6之前,JavaScript没有块级作用域(一对花括号{}即为一个块级作用域),只有全局作用域和函数作用域。变量提升即将变量声明提升到它所在作用域的最开始的部分。上个简历的例子如:12345678910console.log(global);
2017-09-11 17:50:41
365
原创 Json语法规则
数据为键值对。数据又逗号分隔。大括号保存对象。方括号保存数组。{"employees": [{ "firstName":"Bill" , "lastName":"Gates" },{ "firstName":"George" , "lastName":"Bush" },{ "firstName":"Thomas" , "lastName":"Carter" }]}
2017-09-11 17:30:00
320
原创 一元运算符+
Operator + 可用于将变量转换为数字:var y = "5";var x = +y;//x是一个数字如果变量不能转换,它仍然是一个数字,但值为NaN(不是一个数字)var y = 'jay';var x = +y;//x是一个数字(NaN)
2017-09-11 17:23:50
524
原创 For/In循环
JavaScript for/in语句循环遍历对象的属性:var xvar mycars = new Array()mycars[0] = "Saab"mycars[1] = "Volvo"mycars[2] = "BMW"for (x in mycars){document.write(mycars[x] + "")}
2017-09-11 17:20:09
761
原创 JavaScript函数向未声明的变量分配值
如果你把值赋给尚未声明的变量,该变量将被自动作为全局变量声明。xxx = function(){name = 'jay';}以上代码将声明一个全局变量那么,即时它在函数内执行。
2017-09-11 16:33:55
652
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人