java 引用内存,构造方法,String



java 引用内存,构造方法,String

Person p=new Person();//创建并实例化对象

p在栈中,而具体new出来的对象在堆里面,例如对象的那些属性都放在堆里面

Person p=null;//这是声明

p=new Person();//这是实例化对象

在程序中所有的方法都是保存在全局代码区之中的。

只要有实例化对象,就要调用构造方法;构造方法声明处不能有返回类型,不能在构造方法中用return语句

构造方法主要是为了要初始化类中的属性。

匿名对象就是比之前的对象少了一个栈内存的引用关系。

如:new Perso[......]

Read more

java 私有构造方法,继承



java  私有构造方法,继承

被私有化的构造方法在外部不能使用,只能从其内部取得实例化对象,那么如何把内部的实例化对象拿出来使用呢?那么可以将在该类内部实例化的对象,设为static的,那么就可以使用了。这就是单态设计模式。这是不希望某个类产生过多的对象。因为不管你在外部声明多少个对象,其实都是该类内部实例化对象的引用。

子类实例化过程,子类对象在实例化之前必须首先调用父类中的构造方法之后再调用子类自己的构造方法。

其实在子类构造中隐含了一个super()语句

被子类覆写的方法不能拥有比父类方法更严格的访问权限。可以通过super来调用父类中的方法。父类总的pri[......]

Read more

java 对象多态性

java 对象多态性

java的多态性:方法的重载和覆写、对象的多态性

对象的多态性主要分以下两种类型:

向上转型也就是子对象-》父类对象

父类 父类对象=子类实例;

通过子类进行父类对象的实例化操作的话,如果调用的方法被子类覆写过,则肯定调用被覆写的方法。转型之后,因为操作的是父类对象,所以是无法找到在子类中定义的新方法。

向下转型也就是父类对象-》子类对象

子类 子类对象=(子类)父类实例

将父类对象变成子类对象,称为向下转型,向下转型需要采用强制的手段。注意出现转换错误问题。如果想要产生对象的向下转型,则首先哟产生一个向上的转型[......]

Read more

java 内存操作流

java 内存操作流

ByteArrayInputStream将内容写入到内存之中

ByteArrayOutputStream将内存中数据输出

ByteArrayInputStream(byte[] buf)接收一个byte数组,实际上内存的输入就是在构造方法上将数据传入到内存之中,其中的read()是读取数据放到内存

ByteArrayOutputStream()是从内存中读取数据并返回。write()是从内存中读数据写到byte数据

java 管道流

java 管道流

管道流的主要作用是可以进行两个线程之间的通信,分为管道输出流和管道输入流,如果想要进行管道输出,则必须把输出流连在输入流之上。

线程1->PipedOutputStream(输出流)|PipedInputStream(输入流)->线程2

要注意使用connect连接

数据结构、算法和应用(java语言实现

数据结构、算法和应用(java语言实现

每一个java程序都是一个类,每个类可能包含数据和方法成员。

一个独立运行的java程序必须有个名称为main的方法,一个applet必须由一个名为init的方法。

在执行一个java程序前,必须对它进行编译。编译的过程就是将java源代码翻译为所谓的java字节码。与执行源代码相比,执行字节码更容易且更有效率。编译后的字节码是写入到.class文件里面的。而c,c++这样的编程语言的编译过程是将源代码编译为执行该程序的计算机的本地语言。编译后的c或c++程序可直接在计算机上运行所以比java执行得要更快一些。java的字节码不是任何计算机[......]

Read more

linux下的文件结构

linux下的文件结构/bin二进制可执行文件

/dev设备特殊文件
/etc系统管理和配置文件
/etc/rc.d启动的配置文件和脚本
/home用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示
/lib标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件
/sbin系统管理命令,这里存放的是系统管理员使用的管理程序
/tmp公用的临时文件存储点
/root系统管理员的主目录
/boot目录存放引导加载器使用的文件
/mnt系统提供这个目录是让用户临时挂载其他的文件系统
/lost+found这个目录平时的空[......]

Read more

java编译过程与c/c++编译过程不同

java编译过程与c/c++编译过程不同 。

java编译过程将java源程序编译成jvm可执行代码–java字节码。
C/C++编译过程:当c编译器编译生成一个对象的代码时,该代码时为在某一特定硬件平台运行而生成的。因此在编译过程中,编译过程通过查表将所有对富豪的引用转换为特定的内存偏移量,以保证程序运行。
java编译过程:java编译器却不将对变量和方法的引用编译为数值引用,也不确定程序执行过程中的内存布局,而是将富豪引用信息保留在字节码中,由解释器在运行过程中创立内存布局,然后再通过查表来确定一个方法所在的地址,这样就保证了java的可移植性和安全性。

jvm的工作原[......]

Read more

javac命令详解

javac命令详解

javac [options][sourcefiles][@files]
options命令行选项。
sourcefiles一个或多个要编译的源文件(例如:HelloWorld.java)
@files一个或者多个对源文件进行列表的文件
javac有两种方法可将源代码文件名传递给javac:如果源文件数量少,在命令行上列出文件名即可;如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。然后在javac命令行中使用该文件名,文件名前冠以@字符。
源代码文件名称必须含有.java后缀,类文件名称必须含有.class后缀,源文件和类文件都[......]

Read more

jvm加载class文件的原理

jvm加载class文件的原理

在Java中,类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成:装载、链接和初始化,其中链接又可以分成校验、准备、解析
装载:查找和导入类或接口的二进制数据;
链接:执行下面的校验、准备和解析步骤,其中解析步骤是可以选择的;
校验:检查导入类或接口的二进制数据的正确性;
准备:给类的静态变量分配并初始化存储空间;
解析:将符号引用转成直接引用;
初始化:激活类的静态变量,初始化Java代码和静态Java代码块

Read more