最近重温了<Thinking in Java>,发现了一个让我为之兴奋的知识漏洞,必须得分享一下. 上一篇的<Java类初始化的过程>的随笔中,那个初始化顺序并不完整.初始化的实际过程是: 在其他任何事物发生之前,将分配给对象的存储空间初始化成二进制的0: 如上一篇的<Java类初始化的过程>那样:父类的static成员变量和方法-->该类的static变量和方法-->开始实例化-->父类的普通成员变量和方法-->父类的构造方法-->该类的…
网上看了好多java直接打印一个对象时,直接调用该类的toString方法 . 但是: Object obj=null; System.out.println(obj);//没有报错 System.out.println(obj.toString());//报空指针异常 System.out.println(obj);既然也是直接调用toString方法,为什么不报错??? 原因总结如下: 1.调用Object类的toString方法,必须保证object不是null值,否则将抛出NullPoi…
目录:[Swift]Xcode实际操作 本文将演示PerformSelector消息处理方法. 在项目文件夹上点击鼠标右键弹出文件菜单. [New File]->[Swift File]->[Next]->[Save As]:iOSApp.swift->[Create] 现在开始编写代码,创建Swift类[iOSApp.swift] import Foundation //创建一个继承自基础对象的类 class IOSApp: NSObject{ //给类添加一个无参方法, @ob…
使用外部方法时(不管是static还是非static),都要先new一个对象,才能使用该对象的方法. 举例如下: 测试函数(这是错误的): public class Test { public static void main(String[] args) { Employee employee = null; employee.setName("旺旺"); //有警告,况且这里也执行不下去 employee.setEmail("ww@qq.com"); emplo…
在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bo=new BufferedWriter(new FileWriter("sql语句.txt")); 用到这个的时候一定不能忘了他的伴侣代码.. bo.close(); 或者 bo.flush(); 实际上,FileWriter在写文件时,会把内容存储到一块缓冲区中,当缓冲区满后,才会把缓冲区中的内容存入数据库,内容再继续存到缓冲区,如此反复,而flush()会将内存中的内容强制写到文件中,即使内存没满.…
在java的IO体系中,写文件通常会用到下面语句 BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt")); 用到这个的时候一定不能忘了他的伴侣代码.. bw.close(); 或者 bw.flush(); 实际上,FileWriter在写文件时,会把内容存储到一块缓冲区中,当缓冲区满后,才会把缓冲区中的内容写入文件,内容再继续存到缓冲区,如此反复,而flush()会将内存中的内容强制写到文件中,即使内存没满.这…
代码1: 打印结果: 代码2: 运行结果: 问题: 代码1中super是父类自己调用自己的add()方法,并在add()方法中调用了私有的del()方法,那为什么打印出来的this是子类? 代码2中this是子类去调用了父类继承下来的add()方法,但是为什么还能在add()方法中调用到父类的私有的del()方法? 谁能解释为什么? 欢迎留言.不要说废话! 看懂问题再来讨论为什么!!!!!!…
Java虚拟机运行时数据区 详解 2.1 概述 本文参考的是周志明的 <深入理解Java虚拟机>第二章 ,为了整理思路,简单记录一下,方便后期查阅. 2.2 运行时数据区域 Java虚拟机在Java程序运行时会将内存区域划分成若干个不同的区域,各自负责不同的职责,这些区域都有各自的用途. Java虚拟机运行时数据区分为以下几个部分. 方法区.虚拟机栈.本地方法栈.堆.程序计数器,如下图所示: 图片来源于网络如有侵权请私信删除 2.2.1 程序计数器 程序计数器是一块较小的内存空间,可以看作当前…
静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数. 当一个类中有若干个必选属性和多个可选属性时,采用重叠构造器模式.JavaBeans模式或者Builder模式,但各有优劣. 当有很多参数的时候,重叠构造器模式下客户端代码会很难编写,并且仍然较难以阅读. JavaBeans模式调用一个无参构造器来创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数.因为构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态.与此相关的另一点不…
除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方. 1. 尽量在合适的场合使用单例   使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面: 第一,控制资源的使用,通过线程同步来控制资源的并发访问: 第二,控制实例的产生,以达到节约资源的目的: 第三,控制数据共享…