结论: 1、基本类型作为参数传递时,是传递值的拷贝(不是值本身),无论你怎么改变这个拷贝,不会引起原值的改变的。 2、对象(String类型除外)作为参数传递时,是把对象在内存中的地址拷贝一份传给参数,即在该方法中修改该参数,会引起原值的变化。 校验如下: public class HelloMet ...
分类:
编程语言 时间:
2020-06-05 01:06:28
阅读次数:
102
PS:蓝色块为线程独享空间 1、程序计数器(Program Counter Register) 1.1概述 a当前线程正在执行Java方法,记录所执行的虚拟机指令的地址。否则为空(Undefined)。 b每个线程都有独立的PC, c字节码解释器工作时通过改变PC的值来选取下一条需要执行的字节码指令... ...
分类:
其他好文 时间:
2020-05-31 19:53:36
阅读次数:
85
CAS和AtomicInteger AtomicInteger用来保证自增原子性,它的实现是基于CAS(比较和交换)的。 CAS(CompareAndSwap):判断内存某个位置的值是否与预期值一致,如果是则更改为新值,这个过程是原子的。不会造成数据不一致的问题。 compareAndSet(exc ...
分类:
其他好文 时间:
2020-05-31 16:17:58
阅读次数:
81
方法重载和方法覆盖的相同点: 都要求方法名相同; 都可以用于抽象方法和非抽象方法之间。 方法重载和方法覆盖的不同点: 方法覆盖要求参数签名必须一致,而方法重载则要求参数签名必须不一致; 方法覆盖要求返回类型必须一致,而方法重载对此不做限制; 方法覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类的 ...
分类:
编程语言 时间:
2020-05-29 12:03:15
阅读次数:
63
1.方法递归 1.1 简介 定义:方法自身调用方法自身就是递归。例如: a(){ a(); } 举例:看如下代码即实现的是递归调用: /* 方法递归 */ public class MethodDG { public static void main(String[] args) { System. ...
分类:
编程语言 时间:
2020-05-25 15:55:47
阅读次数:
86
在实际开发中,我们时常面临将客户端发送的字符串数据转换为数字的情况,如果不做判断,直接使用java方法转换的话,可能会报类型转换异常(客户输入的数据不是数字),所以一定要做字符串数据的判断 方法一:判断字符串是否为整数 方法二:判断字符串是否为整数或者小数 如果以上方法返回的值为true,则可以进行 ...
分类:
其他好文 时间:
2020-05-22 09:32:33
阅读次数:
61
Java方法式语句的集合,就是一段用来完成特定功能的代码片段,类似于其它语言的函数,Java是值传递类型。 设计原则 :方法的本意是功能块,就是实现某个功能的语句块的集合。设计方法的时候,最好保持方法的 原子性 :就是一个方法只完成一个功能,这样有利于后期扩展。 格式: 代码讲解: 方法的重载 方法 ...
分类:
编程语言 时间:
2020-05-18 18:54:11
阅读次数:
54
一、JVM内存区域JVM内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【JAVA堆、方法区】、直接内存。二、线程私有区域线程私有数据区域生命周期与线程相同,依赖用户线程的启动/结束而创建/销毁。程序计数器:是一块较小的内存空间,是当前线程所执行的字节码的行号指示器。正在执行java方法的话,计数器记录的是虚拟字节码指令的地址(当前指令的地址)。如果还是native方
分类:
其他好文 时间:
2020-05-18 09:19:10
阅读次数:
68
内存分配的两种方式 指针碰撞法 维护一个指针,指针左边为已分配的内存,右边为空闲内存,动态调整指针。在右边进行分配。 要求内存规整。 空闲表法 维护一张表,记录哪里分配了哪里没有分配。分配的时候找能存放对象的空间分配即可。 要求内存不规整。 内存分配并发问题(补充内容,需要掌握 在创建对象的时候有一 ...
分类:
其他好文 时间:
2020-05-17 17:31:35
阅读次数:
69
第二章:Java内存区域与内存溢出异常 2.1 运行时数据区 1:程序计数器 : 线程私有,较小的内存空间,当前线程所执行的字节码的行号指示器,唯一不会发生错误的内存区域 2:虚拟机栈: 线程私有,生命周期和线程相同,为虚拟机执行Java方法服务,指的是Java内存模型,可发生StackOverfl ...
分类:
编程语言 时间:
2020-05-15 13:54:48
阅读次数:
66