JAVA基础
文章平均质量分 63
iteye_8435
这个作者很懒,什么都没留下…
展开
-
字符串与其他数据类型之间的转换
在Java中提供了字符串与其他数据类型之间的转换,尤其是与基本数据类型和包装类间的转换,会被经常用到。[size=medium]1、将其他数据类型转换为字符串[/size]将其他数据类型转换为字符串存在两种方法:调用类的toString()方法和调用String类的valueOf()方法。[b](1)调用类的toString()方法。[/b]如果该类为基本数据的包装类,则可...原创 2010-08-22 10:23:44 · 260 阅读 · 0 评论 -
Java初学者都必须理解的七大问题
[size=medium][b]问题一:我声明了什么![/b][/size][code="java"]String s = "Hello world!"; [/code]许多人都做过这样的事情,但是,我们到底声明了什么?回答通常是:一个String,内容是"Hello world!"。这样模糊的回答通常是概念不清的根源。如果要准确的回答,一半的人大概会回答错误。 这个语句声明的是一...原创 2010-09-18 10:36:33 · 68 阅读 · 0 评论 -
Java堆和栈的区别 经典总结(转载)
栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。 堆是由垃圾回收来负责的。堆的优势是可以[b]动态地分配内存大小,生...原创 2010-09-18 16:48:47 · 71 阅读 · 0 评论 -
创建String对象过程的内存分配小结
[b]常量池(Constant Pool)[/b]:指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。JVM虚拟机为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集和,包括直接常量(String,Integer和 Floating point常量)和对其他类型,字段和方法的符号引用。对于String常量,它的值是在常量池中的。而JVM中的常量池在内存当中是...原创 2010-09-23 20:32:26 · 152 阅读 · 0 评论 -
Java中创建线程的两种方法
在Java中创建线程有两种方法:继承Thread类和实现Runnable接口。[size=medium]一、继承Thread类创建线程类(Thread类已经实现了Runnable接口)[/size]1、Thread类的构造方法有8个,但常用的只有4个,分别为:[img]http://dl.iteye.com/upload/attachment/316645/a37abf48-e...原创 2010-09-26 10:18:52 · 97 阅读 · 0 评论 -
Java中Thread类的start()和run()的区别
1、start()方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。然后JVM通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程执行体,它包含了要执行的这个线程的内容,run方法运行结束,此线程终止,而CPU再运...原创 2010-09-27 15:33:31 · 82 阅读 · 0 评论 -
线程的状态
[size=medium]线程从创建到执行完毕的整个过程称为线程的生命周期,在整个生命周期中,线程对象总是处于下述各生存状态中的某一个,如下图所示:[img]http://dl.iteye.com/upload/attachment/318676/880e9d4e-0e15-3e02-855a-98318a393af2.jpg[/img]从图中可以看出:线程从阻塞(Blocked)状态...原创 2010-09-28 19:00:18 · 51 阅读 · 0 评论 -
控制线程
[size=medium]1、线程睡眠:sleep[/size]如果我们需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的[b]静态[/b]sleep方法,sleep方法有两种重载的形式:● public static void sleep(long millis) throws InterruptedException让当前正在执行的线程暂停...2010-10-10 16:06:29 · 91 阅读 · 0 评论 -
java网站收集
JAVA开发者最常去的25个英文网站:[url]http://www.iteye.com/topic/582297[/url]Java 学习网站汇总贴:[url]http://www.iteye.com/topic/568306[/url]经常去的java学习网站和招聘网站:[url]http://www.iteye.com/topic/254571[/url]...原创 2010-10-10 18:13:35 · 100 阅读 · 0 评论 -
线程的同步
一个经典的关于线程安全性的问题:银行取钱问题。银行取钱的基本流程基本可以分为以下几个步骤:(1)用户输入账户、密码,系统判断用户的账户、密码是否匹配。(2)用户输入取款金额。(3)系统判断账户余额是否大于取款金额。(4)如果余额大于取款余额,取款成功;如果余额小于取款金额,则取款失败。要求:按照以上步骤编写取款程序,并且要使用两个线程模拟取钱操作,即模拟两个人使用同...原创 2010-10-11 19:00:19 · 127 阅读 · 0 评论 -
线程的死锁
当两个线程相互等待对方释放同步监视器时就会发生死锁,Java虚拟机没有监测,也没有采用措施来处理死锁情况,所以多线程编程时应该采取措施避免死锁的出现。一旦出现死锁,整个程序既不会发生任何异常,也不会给出任何提示,只是所有线程都处于阻塞状态,无法继续运行。死锁是很容易发生的,尤其在系统中出现多个同步监视器的情况下,如下程序将会出现死锁:源代码:DeadLock.java[code="ja...原创 2010-10-11 19:21:17 · 99 阅读 · 0 评论 -
成员初始化
Java尽力保证:[b]所有变量在使用前都能得到恰当的初始化[/b]。对于定义在[b]方法内部的局部变量[/b],Java以编译时错误的形式来贯彻这种保证。例如:[code="java"]void f(){ int i; i++;//Error--i not initialized}[/code]该段代码会得到一条出错消息,告诉你i可能尚未初始化。当然,编译器也可以为i...原创 2010-10-18 07:55:06 · 86 阅读 · 0 评论 -
构造器初始化
可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动作来确定初值,这为编程带来了更大的灵活性。但要牢记:[b]无法阻止自动初始化的进行,它将在构造器被调用之前发生[/b]。例如下述代码:[code="java"]public class Counter{ int i; Counter(){ i = 7; } //......}[/code]那么i首先会被置为0,然...原创 2010-10-18 14:42:23 · 178 阅读 · 0 评论 -
两个程序的说明
1、程序1的结果是:[code="java"]class A{ static{ System.out.println("load a"); } A(){ System.out.println("create a"); }}class B extends A{ static{ System.out.println("load b"); } B...原创 2010-10-19 09:26:01 · 125 阅读 · 0 评论 -
泛型(core java 笔记)
1.为什么引入泛型[code="java"]package generic;import java.util.ArrayList;public class ArrayListTest{ public static void main(String[] args){ ArrayList al = new ArrayList(); al.add(1); S...原创 2013-06-18 16:18:09 · 154 阅读 · 0 评论 -
可变参数
从JDK1.5开始,Java允许使用可变参数为方法指定数量不确定的参数。如果在定义方法时,在方法的[b]参数列表的最后一个类型后增加三点[/b](...),则表明该参数可以接受多个参数值,[b]多个参数值被当成数组传入[/b]。例如:[code="java"]public class VariableParameter { public static void main(...原创 2013-06-24 15:38:24 · 109 阅读 · 0 评论 -
关于计算java程序运行时间(转载)
[code="java"]//第一种,伪代码 long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); //测试的代码段 long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+...原创 2010-09-18 09:22:51 · 87 阅读 · 0 评论 -
for循环的优化
在程序中经常用到for循环,当一些算法实时性要求非常高时,对for循环的优化有时可以带来意想不到的收获。通常使用的for循环语句形式有:[code="java"]for(int i=0;i0;i--){}[/code]这里涉及到编译器对判断语句的编译,在CCS中,对于i>0使用的是AGT也即大于等于0的后缀,而对于i...原创 2010-09-17 20:29:23 · 276 阅读 · 0 评论 -
详细解析Java中抽象类和接口的区别(转载)
在Java语言中,abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很...原创 2010-09-17 10:16:10 · 56 阅读 · 0 评论 -
==运算符与equals()方法
1、“==”运算符(1)比较基本数据类型变量当两个基本数据类型的操作元通过“==”运算符比较是否相等时,比较的是这两个操作元的值是否相等,如果相等结果为True,否则为False,在比较时不考虑操作元的数据类型。例如:[code="java"]int i = 98;int j = -98;float f = 98.0f;System.out.println(i==j...原创 2010-09-09 15:31:50 · 119 阅读 · 0 评论 -
关于浮点数据的算术运算
先看一下程序:[code="java"]public class Test{ public static void main(String args[]){ System.out.println(4.0f - 2.9f); System.out.println(1234f/0); System.out.println(-5678f/0); System.out...原创 2010-09-09 15:58:13 · 310 阅读 · 0 评论 -
引用类型间的类型转换
引用类型间的转换有自动类型转换和强制类型转换两种。对于类引用类型,只有具有继承关系的类,即父类与子类之间,才可以进行类型的转换。[b]当引用了某个子类的变量对引用该子类的父类的变量赋值时,会自动进行类型的转换;反之,父类对子类进行赋值时则需要进行强制类型转换。[/b]例如,A为父类,B、C分别继承自类A,分别定义引用这3个类的变量,然后进行各种赋值操作。定义引用变量:[code="...原创 2010-09-09 16:02:50 · 264 阅读 · 0 评论 -
类引用数据类型的赋值操作
对于类引用数据类型的赋值操作,类引用变量存储的是对象的引用,两个变量之间的赋值就是将一个变量存储的对象引用赋给另一个变量,最终使得这两个变量引用同一个对象,因此此时无论通过哪一个引用变量来操作对象,都会影响到另一个引用变量所引用的对象。 注意:引用类型可进行赋值的条件是在赋值运算符“=”的左边的变量被显式声明的类型必须与“=”右边的变量的类型相同或有继承关系,否则编译出错。 例如:...原创 2010-09-09 16:15:29 · 476 阅读 · 0 评论 -
逻辑运算符中的“短路”与“非短路”
短路:在逻辑表达式中,如果能通过逻辑运算符左边表达式的值就能推算出整个表达式的值,那么将不再继续执行逻辑运算符右边的表达式。(&&,||)非短路:始终执行逻辑表达式两边的表达式。(&,|)例如:[code="java"]public class Test2{ public static void main(String args[]){ int a = 1; int...原创 2010-09-09 16:20:46 · 652 阅读 · 0 评论 -
位运算符
位运算符除按位运算符中的按位与和按位或运算符外,其他的只能用于整数间的运算。位运算符是针对整数在内存中存储的二进制数据流中的位进行的操作。例如表达式“2-2 147 483 645”的结果,因为整数-2 147 483 645为int型,最小值为-2 147 483 648,所以m/2d中的d取值为2 147 483 648 – 2 147 483 645 = 3,所以表达式“17>>-2 147...原创 2010-09-10 14:58:54 · 80 阅读 · 0 评论 -
方法的覆盖简单举例
覆盖是指父子类之间的关系,当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,此时称为子类的方法覆盖了父类的方法。覆盖体现了子类补充或者改变父类方法的能力,通过覆盖,可以使一个方法在不同的子类中表现出不同的行为。下面通过一个具体的实例介绍如何实现方法的覆盖。本实例主要实现定义一个动物类Animal及它的子类Bird,具体步骤如下...原创 2010-09-10 20:20:20 · 592 阅读 · 0 评论 -
抽象类与抽象方法简单举例
注意:抽象方法不能使用private或static关键字进行修饰。本实例主要实现定义一个水果类Fruit,该类为抽象类,并在该类中定义一个抽象方法,同时在其子类中通过覆盖的方法实现该抽象方法。(1)创建Fruit类:[code="java"]public abstract class Fruit{ //定义抽象类 public String ...原创 2010-09-10 20:54:50 · 707 阅读 · 0 评论 -
接口简单举例
接口的定义与类类似,接口也可继承父接口,接口中的方法只有定义而没有被实现。在类中实现接口时,方法的名字、返回值类型、参数个数及类型必须与接口中的完全一致,并且该类必须实现接口中的所有方法。 在类的继承中只能实现单重继承,而实现接口时则可以一次实现多个接口,每个接口间使用逗号“,”隔开。这时就可能出现常量或方法名冲突的情况,解决该问题时,如果常量冲突,则需要明确指定常量的接口,这可...原创 2010-09-11 08:16:53 · 245 阅读 · 0 评论 -
Java类的共同父类Object
java.lang.Object类是所有Java类的最高层次父类,该类中没有定义任何属性,方法也只有几个,但正是这些方法提供了面向对象编程技术的基本机制,下面将分别介绍:[size=medium]1、hashCode()方法[/size]hashCode()方法的格式如下:[code="java"]public int hashCode()[/code]其功能是返回当前对象...原创 2010-09-11 13:53:03 · 287 阅读 · 0 评论 -
栈与堆:生存空间
在Java中,程序员会在乎内存中的两种区域:对象的生存空间堆(heap)和方法调用及变量的生存空间栈(stack)。当Java虚拟机启动时,它会从底层的操作系统取得一块内存,以及你是否能够调整它都要看Java虚拟机与平台的版本而定。但通常你对这些事情无法加以控制。[b]所有的对象都存活于可垃圾回收的堆上,方法调用在栈中执行,局部变量存活于栈中。[/b]当你调用一个方法时,该方法会放...原创 2010-09-11 15:44:25 · 86 阅读 · 0 评论 -
集合类(一):Collection接口
1、集合类概述在java.util包中提供了一些集合类,常用的有List、Set和Map类,其中List类和Set类继承了Collection接口。这些集合类又称为容器,它们与数组不同,数组的长度是固定的,而集合的长度是可变的,数组用来存放基本数据类型的数据,集合用来存放类对象的引用。List接口、Set接口、Map接口以及Collection接口的主要特征如下:● Collectio...原创 2010-09-16 15:47:12 · 199 阅读 · 0 评论 -
集合类(二):List集合
3、List集合List集合为列表类型,列表的主要特征是存放其中的对象以线性方式存储,没有特定的顺序,只有一个开头和结尾,当然,它与根本没有顺序的集类型时不同的。[b](1)List集合的用法[/b]List集合包括List接口以及List接口的所有实现类。因为List接口继承了Collection接口,所以List接口拥有Collection接口提供的所有常用方法,又因为List是列...原创 2010-09-16 16:32:31 · 300 阅读 · 0 评论 -
集合类(三):Set集合
4、Set集合Set集合为集类型,集是最简单的一种集合,存放于集中的对象不按特定方式排序,只是简单地把对象加入集合中,类似于向口袋里放东西。对集中存在的对象的访问和操作是通过对象的引用进行的,因此在集中不能存放重复对象。Set集合包括Set接口以及Set接口的所有实现类。因为Set接口继承了Collection接口,所以Set接口拥有Collection接口提供的所有常用方法。[b](1)...原创 2010-09-16 19:43:39 · 157 阅读 · 0 评论 -
集合类(四):Map集合
5、Map集合Map集合为映射类型,映射与集和列表有明显的区别,映射中的每个对象都是成对存在的。映射中存储的每个对象都有一个相应的键(Key)对象,在检索对象时必须通过相应的键对象来获取值(value)对象,类似于在字典中查找单词一样,因此要求键对象必须是惟一的。键对象还决定了存储对象在映射中的存储位置,但并不是键对象本身决定的,需要通过一种散列技术进行处理,从而产生一个被称作散列码的整数值,...原创 2010-09-16 20:26:46 · 234 阅读 · 0 评论 -
foreach循环
从JDK1.5开始,Java提供了一个更简单的循环:foreach循环,这种循环遍历数组和集合更加简洁。使用foreach循环遍历数组元素和集合元素时,无需获得数组和集合的长度,也无需根据索引来访问数组元素和集合元素,foreach循环自动遍历数组和集合的每一个元素。foreach循环的语法格式:for(type variableName: array | collection...原创 2013-06-24 16:15:19 · 109 阅读 · 0 评论