![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
LangRenSheng
这个作者很懒,什么都没留下…
展开
-
Java——单例模式和延迟加载
延迟加载 延迟加载(lazy load) (也称为懒加载,也叫延迟实例化,延迟初始化等)主要表达的思想就是:把对象的创建延迟到使用的时候创建,而不是对象实例化的时候创建。延迟加载机制是为了避免一些无谓的性能开销而提出来的,这种方式避免了性能的浪费。所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。 单例模式 单例模式: 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对...转载 2018-10-22 10:45:04 · 4260 阅读 · 0 评论 -
Java 关于i=i++的探究
问题: int i = 1; i = i++; //问题一:此时i等于多少? j = i++; //问题二:此时i,j分别为多少? 分析: 由于i++和i--的使用会导致值的改变,所以在处理后置的++和--运算的时候,java的编译器会重新为变量分配一块新的内存空间,用来存放原来的值,而完成赋值运算之后,这块内存会被释放。 (1) 对于 i = i++ (2) 对于 j = i++ 解决:...原创 2018-11-27 15:13:39 · 138 阅读 · 0 评论 -
为什么有栈内存和堆内存之分?
当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会逐个放入这块栈内存里,随着方法的执行结束,这个方法的内存栈也将会自然销毁。因此,所有在方法中定义的局部变量都是放在栈内存中的;在程序创建一个对象时,这个对象将会被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时的数据区就是堆内存。堆内存中的对象不会随着方法的结束而销毁,即使方法结束后,这个对象还可...原创 2018-12-20 16:43:06 · 779 阅读 · 0 评论 -
省略临时变量实现两个整数类型变量的交换
1.用两个数求和然后相减的方式进行数据交换。但如果x和y的数值过大,它们的和超出int的取值范围,将会损失精度,也就不能准确的成功交换数据了。 public class Test { public static void main(String[] args) { int x = 5; int y = 10; x = x + y; y = x - y; x =...原创 2018-12-22 13:02:55 · 151 阅读 · 1 评论 -
&&和||放在一个表达式中是怎么执行的?
先上代码: public class Test { public static void main(String[] args) { if(test1() && test2() || test3()) { System.out.println("Main: Result is true!"); }else { System.out.println("...原创 2018-12-22 14:04:22 · 1701 阅读 · 2 评论 -
Java-快速排序的学习使用与注意事项
快速排序 讲解: 简单的来说就是选择一个基准数(相当于一个参考对象)把大于基准数的数都放在他的左边,小于它的数都放在右边然后进行左右两边再次进行相同操作(递归),最后得到从小到大的有序的数。在这不详细讲解,大概详情如下图(该图来自《啊哈!算法》,感兴趣的朋友也可以去看一下,在这阿夜主要是想记录下下面的注意事项)。 注意: 基准数选择与左右指针移动的先后顺序有关,如我们的基准数的选择更偏向于较小...原创 2019-03-27 09:06:12 · 236 阅读 · 0 评论