随笔分类 - Java
Java常见的一些问题解答
摘要:在用Android测试JSON数据解析的时候,报了这样一个异常:
java.net.ConnectException: localhost/127.0.0.1:8080 - Connection refused
阅读全文
摘要:The connection to adb is down, and a severe error has occured.
[2010-03-11 09:36:56 - HelloOPone] You must restart adb and Eclipse.
[2010-03-11 09:36:56 - HelloOPone] Please ensure that adb is correctly located at 'D:\OPhoneSDK_1.5
\platform-tools\adb.exe' and can be executed.
adb server is out of date. killing...
ADB server didn't ACK *
failed to star
阅读全文
摘要:打印任一正数年每一月的日历:
注意:公元元年1月1日是星期六
打印结果:
请输入一个年份:2013
2013 年
1月
================================
日 一 二 三 四 五 六
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
阅读全文
摘要:一门成熟的编程语言应该包含异常处理机制。
没有人能够保证自己写的程序永远不会出错,对于一个程序设计人员来说应该尽可能地与之可能发生的情况,尽可能地保证程序在所有糟糕的情形下都可以运行。Java的异常处理机制具有极好的容错性,可以让程序更加的健壮。当程序出现意外情形的时候,系统会自动生成一个Exception对象来通知程序,从而将“业务功能实现代码”和“错误处理代码”分离,提供更好的可读性。
下面是异常处理的几个关键字:
· try 放置可能发生错误的代码
· catch 用于处理某种错误
· finally 回收try块里面打开的物理资源,总会执行
· throws 用于声明某个方法可能抛出异常
· throw 抛出一个具体的异常对象
阅读全文
摘要:List集合代表一个元素有序,可重复的集合,集合中每个元素都有其对应的顺序索引。List集合默认按元素的添加顺序设置元素的索引,第一个索引默认为0,之后的递增。
List集合中的常用操作元素的方法:
· void add(int index, Object element): 将元素element插入到元素的index处;
· boolean addAll(int index, Collection c): 将集合c 所包含的所有元素都插入到List集合的index处
· Object get(int index):返回集合index索引处的元素;
· int indexOf(Object o):返回对象o在List集合中第一次出现位置的索引
· inr lastIndexOf(Object o):返回对象o在List集合中最后一次出现位置的索引
· Object remove(int index):删除并返回index所引处的元素
· Object set(int index, Object elem
阅读全文
摘要:上面的输出结果可能有点让人觉得意外,从输出的结果可知输出的内容已经重复了(有两个-3),但是因为HashSet把他们添加到了不同的地方,所以HashSet完全可以容纳两个相同的元素。
但是当我们试图删除count为-3的R对象的时候,HsahSet会计算出该对象的hsahCode值,从而找出该对象在集合中保存的位置,然后把此处的对象与count为-3的R对象通过equals()方法进行比较,如果相等就删除该对象-----HashSet只有第三个元素才满足该条件(第一个元素实际上是存的count值为5的R 对象对应的位置,所以第三个元素会被删除)。
因此在修改HashSet集合中的对象时,应该考虑到,修改有可能导致该对象与集合中的其他对象相等,从而导致HashSet无法准确访问该对象。
同样的情况也会发生在TreeSet中,如果向TreeSet中添加一个可变对象后,后面的程序修改了改可变对象的成员变量,这将导致与其他对象的大小顺序发生改变,但是TreeSet不会再次调整他们的顺序,甚至可能导致这两个对象通过compareTo(Object obj)方法比较返回0.下
阅读全文
摘要:在编程的时候,常常需要集中存放多个数据。我们可以使用数组来存放这些数据,但是数组有一个缺点:数组的长度是不可变的,数组的空间开辟太大会造成浪费,开辟的空间太小又不够用。这时候就可以使用集合了。
为了保存数量不确定的数据和保存具有映射关系的数据,Java提供了集合类。所有的集合类都在 java.util包下。
Java的集合类主要由两个接口派生出:Collection和Map.这两个接口又包含了一些子接口或者实现类。
下图是java 集合体系
阅读全文
摘要:接口是从多个相似的类中抽象出来的规范,接口不提供任何实现。它体现的是一种规范和实现分离的设计哲学。
· 接口可以是public 或者省略,不能用其他访问修饰符修饰
· 接口应与类名采用相同的命名规则
· 一个接口可以有多个直接的父接口,但接口只能继承接口,不能继承类
· 接口里面包含成员变量,但只能是常量用 static final 修饰,缺省时系统会自动添加static final
· 接口里面的方法只能是抽象方法用public abstract 修饰,缺省时系统会自动补全
· 接口里不允许定义静态方法
· 一个类可以继承一个父类,并同时实现多个接口,implements 部分必须放在 extends后面
· 一个类实现了一个或多个接口之后,这个类必须完全实现这些接口里所定义的去全部抽象方法;否则,该类也必须定义为抽象类
下面看一个实现接口的类:
阅读全文
摘要:========================
当我们想创建一个实例后,要求该实例的成员不再发生改变的时候,就需要使用不可变类(immutable).
创建自定义的不可变类,应遵守如下规则:
· 使用private 和 final修饰该类的成员变量
· 提供带参数构造器,用于传入参数来初始化对象的成员变量
· 为该类提供getter方法,但不要提供setter方法
· 如果有必要重写Object 类的hashCode和equals方法
下面的程序试图定义一个不可变类(Person),但因为包含一个引用类型的成员,且这个引用是可变类,所以导致了Person类也变成了可变类:
阅读全文
摘要:如果一个类始终只能创建一个实例,则这个类被称为单例类。
在一些特殊的情况下,要求不允许自由创建该类的对象,而只允许为该类创建一个对象。为避免其他类自由创建该类的实例,我们可以把类的构造器使用private修饰从而把该类的所有构造器隐藏起来。
但是,一旦把该类的构造器隐藏起来,就需要提供一个public方法作为该类的访问点,用以创建该类的对象,且该方法必须用static修饰(因为调用该方法之前还不存在对象,因此调用该方法的不可能是对象,只能是类)。
除此之外,该类还必须缓存已经创建的对象,因为此类需要使用一个成员变量来保存曾经创建过得对象,因为该成员变量需要被上面的静态方法访问,故该成员变量必须使用static修饰。
下面是一个实例:
阅读全文
摘要:------------《疯狂Java讲义精粹》读书笔记--------------
先猜一猜下面的代码会输出什么吧:
什么!没搞错吧~~~ 怎么不是输出两个true? 时尚这与Java的Integer类的设计有关,查看java.lang.Integer类的源代码:
阅读全文
摘要:Java 是面向对象的语言,它既保留了8中基本数据类型,也提供了8中相对应的包装类(Wrapper Class):
8个包装类除了Character之外可以传入相应的值来初始化,也可以传入字符串初始化。
包装类对象和基本类型变量的转化关系如下:
阅读全文
摘要:用法:
(类型变量 instanceof 类|接口)
作用:
instanceof 操作符用于判断前面的对象是否是后面的类,或者其子类、实现类的实例。如果是则返回true 否则就返回false。
注意:
· instanceof前面的操作数的编译时类型要么与后面的类相同,要么与后面的类具有父子继承关系否则会引发编译错误。
一个简单的例子:
阅读全文
摘要:Java引用变量有两个类型:
· 编译时类型(由声明该变量时使用的类型决定)
· 运行时类型(由实际赋给该变量的对象决定)
当编译时类型和运行时类型不一致,就可能出现多态(Polymorphism)。往往是相同类型的变量、调用同一个方法时呈现出多种不同的行为特征。
看下面这个例子:
阅读全文
摘要:在控制台输出一个用 ' * ' 号打印出来的圆形
通过API文档查询Math类的用法,打印出如下所示的近似圆.只要给定不同半径, 圆的大小也随之改变.
题目来源: 《疯狂Java讲义(精粹)》李刚著 第二章练习题2(Page 61)
阅读全文

浙公网安备 33010602011771号