Java 基础
文章平均质量分 58
一笙筱歌
这个作者很懒,什么都没留下…
展开
-
【转】Java基础:JDK JRE JVM三者之间的联系
简而言之……JVM -- Java Virtual Mechinal JVM就是我们常说的java虚拟机,它是整个java实现跨平台的最核心的部分,所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行,也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。JRE -- Java转载 2015-10-09 13:37:14 · 422 阅读 · 0 评论 -
【转】Java基础:Java成员变量初始化
1 无继承情况下的Java初始化顺序:class Sample{ Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用");转载 2015-11-04 10:51:41 · 429 阅读 · 0 评论 -
shallow copy与deep copy
Java数据类型分为两大类:基本数据类型与引用数据类型:基本数据类型: 变量名指向具体的数值逻辑类型:boolean (默认值:true);文本类型:char (默认值:'\0',即\u0000);整型:byte,short,int,long (默认值:0);浮点型:float,double (默认值:0.0);与基本数据类型相对的是,引用数据类型:变量名指原创 2016-04-25 23:45:08 · 760 阅读 · 0 评论 -
内部类的特性
内部类是一个比较特殊的类,它有一些特殊的性质,总结如下:内部类的类型只用于定义它的类或语句块之内,在外部引用它时,必须给出带有外包类名的完整名称,并且内部类的名字不许与外包类的名字相同;内部类可以访问外包类的static或实例成员变量;内部类可以在成员方法中定义,该成员方法的局部变量或参数必须是final的才能被内部类使用;内部类可以是抽象类或者接口,如果是接口,可以由其他内部类实现;原创 2016-04-26 00:14:01 · 2246 阅读 · 0 评论 -
【转】Java线程安全和非线程安全
ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?StringBuilder和StringBuffer有什么区别?这些都是Java面试中常见的基础问题。面对这样的问题,回答是:ArrayList是非线程安全的,Vector是线程安全的;HashMap是非线程安全的,HashTable是线程安全的;StringBuilder是非线程安全的,StringBuff转载 2016-04-27 00:13:33 · 332 阅读 · 0 评论 -
Java中的private、protected、public和default的区别
(1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。(2)对于protected修饰符,它主要的作用就是用来保护子类的。它的含义在于子类可以用它修饰的成员,其他的不可以,它相当于传递给子类的一种继承的东西。(3)对于default来说,有点的时候也成为friendly转载 2016-05-04 21:56:54 · 253 阅读 · 0 评论 -
Java中throw和throws的区别
当然,你需要明白异常在Java中式以一个对象来看待。并且所有系统定义的编译和运行异常都可以由系统自动抛出,称为标准异常,但是一般情况下Java 强烈地要求应用程序进行完整的异常处理,给用户友好的提示,或者修正后使程序继续执行。直接进入正题哈:1.用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。1.1 throw是语句转载 2016-05-04 22:19:47 · 475 阅读 · 0 评论 -
Java异常处理方案【总结篇】
为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”。笔者在初学java时也是这样认为的。如何在一个多层的j2ee项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked Exception转化成unchecked Exception ,何转载 2016-04-30 00:42:18 · 1137 阅读 · 0 评论 -
Java基础:创建String对象时,String s=new String("abc")和String s="abc"的区别
我们在学习过程中,创建String对象时,接触到两种方法分别是:调用String类的构造方法;使用双引号”“;然而这两种方法生成的字符串对象,在内存中的存储机制是不同的。1.调用String类的构造方法:在使用String构造方法定义对象时,Java环境会在每次调用的时候创建一个新的对象。如下代码所示:String a=new String("tom");Stri原创 2015-10-12 13:19:42 · 494 阅读 · 0 评论 -
Java基础:接口和抽象类
必须被继承的类——抽象类:抽象类的定义:Abstract class Classname1{Abstract void method1(); //抽象方法Abstract void method2(); String var1; //成员变量 Void method(){ //成员方法……}}抽象类的继承:TIPS:某一原创 2015-10-12 13:23:48 · 433 阅读 · 0 评论 -
【转】java基础:Java中数据存储方式
1.寄存器(register)。这是最快的存储区,因为它位于不同于其他存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器由编译器根据需求进行分配。你不能直接控制,也不能在程序中感觉到寄存器存在的任何迹象。2. 堆栈(stack)。位于通用RAM(random-access memory,随机访问存储器)中,但通过它的“堆栈指针”可以从处理器那里获得直接支持。堆栈指针若向下移动,则转载 2015-10-22 23:03:12 · 334 阅读 · 0 评论 -
Java基础:成员变量与局部变量的区别
在Java中,变量可分为成员变量和局部变量两种。1.局部变量局部变量一般是指在方法体内部定义的变量,其作用域是在方法块内部有效。局部变量在使用时,必须先初始化然后才能使用,否则程序将不能顺利编译通过。2.成员变量成员变量是指在类中定义的变量,也就是指属性,其作用域是在整个类中有效。成员变量在定义时可以不指定初始值,系统可以按默认原则初始化,初始化的原则如下所示:原创 2015-10-12 12:59:09 · 467 阅读 · 0 评论 -
【转】java基础:堆&栈
栈栈就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区,里面的变量通常是局部变量,函数参数等。堆就是那些右new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete.如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。堆和栈的区别主要为:1.管理方式不同: 对于栈来讲,是由编译器自动管理,无需我们手转载 2015-10-22 23:27:48 · 311 阅读 · 0 评论 -
【转】Java基础:System.out.println与System.err.println的区别
同时使用了System.out.println与System.err.println()打印输入内容,结果看到的内容和预想的不一样,顺序与预料的不同并不是因为err和out的区别导致,而是因为他们是两个流,由于缓存原因导致输出顺序不同。1、System.out.println 能重定向到别的输出流,这样的话你在屏幕上将看不到打印的东西了, System.err.println转载 2015-10-20 00:21:50 · 11001 阅读 · 2 评论 -
Java 基础:Java语言运行机制
计算机高级编程语言按其程序的执行方式可以分为编译型语言和解释型语言。编译型语言是指使用专门的编译器,针对特定操作系统将源程序代码一次性翻译成计算机识别的机器指令。例如C、C++等。解释性语言是指使用专门的解释器,将源程序代码逐条的解释成特定平台的机器指令,解释一句执行一句,类似于“同声翻译”。例如ASP、PHP等。Java既不是编译型语言也不是解释型语言,它是编译型语言和解释型语言的结原创 2015-10-09 13:05:10 · 579 阅读 · 0 评论 -
Java基础:为何在JDK安装路径下存在两个JRE??
在安装完JDK后,在安装目录下会存在两个JRE目录,一个目录是"/Java/jdk 1.6.0_01/jre",另一个是“/Java/jre1.6.0_01"。在这里解释一下:第一个JRE用于为自身自带的开发工具提供运行环境。第二个JRE用于为开发者编写的代码提供运行环境。以上两个JRE都可以作为开发时Java运行的环境,但是JDK自带工具的运行环境只能选前者。如果一台电脑安装原创 2015-10-09 13:56:12 · 911 阅读 · 0 评论 -
Java基础:JVM运行机制
JVM定义: 顾名思义,JVM就是Java虚拟机。它有自己完善的硬件架构,例如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM须知: 它是Java字节码执行的引擎; 它能够优化Java字节码,使之转换为更高效率的机器指令。JVM中类的装载是通过类加载器(ClassLoader)和它的子类来实现的。JVM屏蔽了于具体操作系统平台相关的信息,从而实现了Java跨平台运行。原创 2015-10-09 13:15:09 · 1243 阅读 · 0 评论 -
Java基础:this关键字、super关键字
this关键字:this代表当前类的一个实例,它经常出现在构造方法和方法中,具体有以下三种使用情况:返回调用当前方法的对象引用;在构造方法中调用当前类中的其他构造方法;当方法参数名和成员变量名相同时,用于区分参数名和成员变量名。1.返回调用当前方法的对象引用:示例代码:public class Leaf{ private Int i=0;原创 2015-10-10 08:45:53 · 319 阅读 · 0 评论 -
Java基础:GC的工作原理
Garbage Collection 简称为GC,即垃圾回收。Java语言提供的GC功能可以自动检测对象是否超过作用域,从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显式操作方法,资源回收工作全部交由GC来完成,程序员不能精确的控制垃圾回收的时机。GC的工作原理如下:Java的内存管理实际上是对象的管理,其中包括对象的分配和释放。对于程序员来说,分配对象使用new关键原创 2015-10-10 08:25:42 · 414 阅读 · 0 评论 -
Java基础:X+=Y和X=X+Y的区别
先看一段示例代码:short s=3;s+=1; //编译通过s=s+1; //编译发生错误在上述代码中,s=s+1出错的原因是右边s+1计算结果为int类型,左边为short类型,违反了自动转换规则,需要强制类型转换。s+=1编译正确的原因在于“+=”运算符会自动根据接收变量的类型进行类型的强制转换。例如x+=y语句等价于“x=x+y"和类型强制转换两个操作。原创 2015-10-12 13:07:22 · 2488 阅读 · 0 评论 -
Java基础:如何解决double和float精度不准的问题
我们知道浮点数是无法在计算机中准确表示的,例如0.1在计算机中只是表示成了一个近似值,因此,对付点数的运算时结果具有不可预知性。在进行数字运算时,如果有double或float类型的浮点数参与计算,偶尔会出现计算不准确的情况。如以下示例代码:package ex;public class BigDeciTest { public static void main(St原创 2015-10-12 08:54:24 · 363 阅读 · 0 评论 -
【转】java基础:动态存储方式与静态存储方式
动态存储方式所谓动态存储方式是指在程序运行期间根据需要进行动态的分配存储空间的方式。动态存储变量是在程序执行过程中,使用它时才分配存储单元,使用完毕立即释放。典型的例子是函数的形式参数,在函数定义时并不给形参分配存储单元,只是在函数被调用时,才予以分配,调用函数完毕立即释放。如果一个函数被多次调用,则反复地分配、释放形参变量的存储单元。静态存储方式所谓静态存储方式是指在程序编译期间分配转载 2015-10-22 23:20:25 · 977 阅读 · 0 评论