随笔分类 -  Java

摘要:Java 中的final关键字非常重要,它可以应用于类、方法以及变量。这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了 什么?使用final的好处是什么?最后也有一些使用final关键字的实例。final经常和static一起使用来声明常量,你也会看到final是 如何改善应用性能的。final关键字的含义?final在Java中是一个保留的关键字,可以声明成员变量、方法、类以及本地变量。一旦你将引用声明作final,你将不能改变这个引用了,编译器会检查代码,如果你试图将变量再次初始化的话,编译器会报编译错误。什么是final变量?凡是对成员变量或者本地变量 阅读全文
posted @ 2013-12-17 14:59 vincent_hv 阅读(456) 评论(0) 推荐(1)
摘要:异常处理 1 /** 2 *异常: 就是程序在运行时出现不正常情况 3 *异常由来: 问题也是现实生活中的事物,也可以通过java类的形式进行描述,并进行封装. 4 * 5 *对于问题的划分: 6 * 1: 严重的问题 (Error) : java通过Error类进行描述,一般不编写针对性的代码进行处理 7 * 2: 非严重的问题 (Exception): java通过Exception类进行描述,一般使用针对性的处理方式进行处理 8 * 9 *无论 Error 或者 Exception 都具有一些共性的内容10 *比如: 不正常的情况信息,引发原因等... 阅读全文
posted @ 2013-05-08 14:22 vincent_hv 阅读(264) 评论(0) 推荐(0)
摘要:声明:这章的内容可能会引用上章的有关例子,使用例子时会直接引用不再做过多描述,有不懂的地方请查阅之前的学习笔记。之前有构造一个雇员Employee类,实际公司雇员中还包含经理等一些其他特殊职位的雇员,他们的一些情况信息会有所不同。例如薪金的算法。假设雇员只有固定的基本薪金,而经理有相应的奖金制度。这样二者绝大多数情况一样仅存在少数的不同,若要为经理重新创建一个新类显然是不实际的。为了解决这样的问题就引入了本章的内容——继承。1、继承用关键字extends表示正在构造的新类派生于已存在的类,写法如下:public Manager extends Employee { //添加域和方法}已存在的. 阅读全文
posted @ 2013-03-01 18:31 vincent_hv 阅读(685) 评论(0) 推荐(0)
摘要:有时类或方法需要对类型变量加以约束。[java] view plaincopyclassArrayAlg{publicstatic<T>Tmin(T[]a){if(a==null||a.length==0)returnnull;Tsmallest=a[0];for(inti=1;i<a.length;i++)if(smallest.compareTo(a[i])>0)smallest=a[i];returnsmallest;}}问题:min方法内部的变量smallest类型为T,意味着它可以是任意类的对象。那么如何确定T所属的类有compareTo方法呢?解答:将T限制 阅读全文
posted @ 2013-02-28 19:10 vincent_hv 阅读(208) 评论(0) 推荐(0)
摘要:一个泛型类就是有一个或多个类型变量的类。一般的类和方法,只能使用具体的类型(基本类型或者自定义类型)。如果要编译应用于多种类型的代码就要引入泛型了。例12-1使用Pair类。静态方法minmax遍历数组同时计算出最小值和最大值。用一个Pair返回两个结果[java] view plaincopypackagecore.pair_12_1;publicclassPairTest1{publicstaticvoidmain(String[]args){String[]words={"Mary","had","a","little 阅读全文
posted @ 2013-02-28 19:09 vincent_hv 阅读(250) 评论(0) 推荐(0)
摘要:捕获异常必须设置try/catch语句块,最简单的try语句:[java] view plaincopytry{//code//morecode}catch(ExceptionTypee){//handlerforthistype}1、如果在try语句中的任何代码抛出了catch子句中说明的异常类:1)程序跳过try语句块的其余代码2)程序执行catch字句中的处理器代码2、如果try语句块中没有抛出任何异常类则跳过catch子句。3、如果方法中任何代码抛出了在catch子句中没有声明的异常类型,该方法会立即退出。[java] view plaincopypublicvoidread(Stri 阅读全文
posted @ 2013-02-28 19:08 vincent_hv 阅读(193) 评论(0) 推荐(0)
摘要:当程序出现异常时,应当次啊去一些异常处理措施:·返回到一种安全状态,并能够让用户执行一些其他命令;·允许用户保存所有操作结果,并以合适的方式终止程序。需要关注的异常问题:1、用户输入错误2、设备错误3、物理限制4、代码错误异常具有自己的语法和特定的继承结构,下面开始介绍:11.1.1异常分类所有已成都由Throwable继承而来,Throwable分为Error和Exception;Exception又分为RuntimeException和IOException。Error类描述Java运行是系统的内部错误和资源耗尽错误。这种情况很少出现RuntimeException是由 阅读全文
posted @ 2013-02-28 19:04 vincent_hv 阅读(179) 评论(0) 推荐(0)
摘要:内部类:定义在一个类中的类。为什么要用内部类:1)内部类可以访问其外围类的实例域,包括私有数据。2)内部类可以对同包中的其他类隐藏。3)定义一个回调函数,使用匿名内部类要便捷。6.4.1 使用内部类访问对象的状态实例:一个TimePrinter常规类,他需要通过TalkingClock类的共有方法访问beep标志。注释:TimePrinter类被声明为私有的,这样只有TalkingClock的方法才能生成TimePrinter对象。内部类可以是私有类,常规类只能是包可见性或公有可见性。例6-4源代码:[java] view plaincopypackagecom.corejava.innerc 阅读全文
posted @ 2013-02-28 18:59 vincent_hv 阅读(208) 评论(0) 推荐(0)
摘要:6.2 对象克隆,这节的内容实际开发中很少使用,所以略过。之后遇到相应的实例在去学习。6.3 接口与回调回调相当于一个监听器,特定事件或时间采取相应的动作。不做过多解释,直接进入实例。源代码:例6-3,程序给出了一个定时器和监听器的操作行为。定时器启动后弹出一个对话框,点击OK来终止程序。程序运行每隔3秒显示一次当前时间。注意:程序出了导入javax.swing.*和java.util.*外,通过类名导入javax.swing.Timer。这样消除了javax.swing.Timer与java.util.Timer之间的二义性。这里的java.util.Timer是一个与本例无关的类,它主要用 阅读全文
posted @ 2013-02-28 18:57 vincent_hv 阅读(203) 评论(0) 推荐(0)
摘要:1、接口不是类;只是对类的一组描述。一个类满足了这一描述就可以使用接口中所提供的方法。例如,Arrays类中的sort方法可以对对象数组进行排序,前提是要满足Comlarable接口。下面是Comparable接口的代码:public interface Comparable { int compareTo(Object other);}即所有实现Comparable接口的类都可以使用compareTo方法。2、接口中的所有方法都是public,所以声明方法时不需要使用public标识。3、接口中绝对不能含有实例域;也不能在接口中实现方法。实例域的提供和方法的实现是由实现接口的类完成的。可以. 阅读全文
posted @ 2013-02-28 18:56 vincent_hv 阅读(174) 评论(0) 推荐(0)
摘要:1、为了解决运行时动态更改数组的问题,使用ArrayList类;它与数组很相似,但在增加或删除元素时具有自动调节数组容量的功能。2、ArrayList是采用类型参数的泛型类。用法:ArrayList<Class Name>ArrayList<Employee> staff = new ArrayList<Employee>();3、使用add方法添加元素:staff.add(new Employee("Harry", ...));staff.add(new Employee("Tome", ....));如果调用add 阅读全文
posted @ 2013-02-28 18:55 vincent_hv 阅读(218) 评论(0) 推荐(0)
摘要:1、Object类是Java所有类的超类。如果没有明确指出一个类的超类,那么object就是这个类的超类,并且不需要显示的写出。2、Object类型的变量可以引用任何类型的对象:Object obj = new Employee("vincent", 100000);如果要对内容进行操作必须要类型转换:Employee e = (Employee)obj;3、在Java中只有基本数据类型(即数值,布尔值,字符)不是对象。所有的数组类型都是Object的扩展类。5.2.1 Equals方法1、判断两个对象是否有相同的引用。如果两个对象的状态相同,就认为二者相等。例如:两个雇员 阅读全文
posted @ 2013-02-28 18:54 vincent_hv 阅读(306) 评论(0) 推荐(0)
摘要:4.6.1 重载多个构造器或多个方法采用相同的名字唯一区别是每个构造器或方法指定的参数类型或参数个数不同。这种特征就叫做重载。4.6.2 默认域初始化在构造器中没有给域赋初值,则会自动被赋值:数值为0、布尔值为flase、引用值为null。4.6.3 默认构造器当且仅当类中没有提供任何一个构造器时,才会自动生成一个默认的构造器。4.6.4 显示域初始化1、在类定义中直接将一个值赋给任何域。例如:class Employee { .... private String name = "..."}这种方法适用于当一个类中所有构造器都希望把相同的值赋给某个特定实例域。2、初始值不 阅读全文
posted @ 2013-02-27 18:15 vincent_hv 阅读(164) 评论(0) 推荐(0)
摘要:1、专业术语:值调用(call by value)表示方法接收的是调用者所提供的值。引用调用(call by reference)表示方法接收的是调用者所提供的变量地址。方法可以修改传递引用所对应的变量,但是不能修改传递值调用所对应的变量值2、Java中总是采用值调用。即方法得到的是所有参数值的一个拷贝值,方法的作用效果均是在这个拷贝值上体现,与原本真实值无关。所以Java中的方法不能修改传递给他的任何参数变量。例如,假定一个方法试图将参数值增至3倍:public static void tripleValue(double x) { x = 3 * x;}double percent = . 阅读全文
posted @ 2013-02-27 18:15 vincent_hv 阅读(176) 评论(0) 推荐(0)
摘要:4.4.1 静态域每个类只有一个被定义为static的静态域;静态域属于类不属于任何独立的对象。(静态域有称类域)4.4.2 静态常量静态常量使用较多。例如,在Math类中定义一个静态常量:public class Math { public static final double PI = 3.14159265358979323846; .....}在程序中可以采用Math.PI的形式来获取这个常量4.4.3 静态方法1、静态方法是不能向对象操作的方法。例如,Math类的pow方法:Math.pow(x, a);在运算是没有使用任何Math对象,即没有隐式参数(this)。2、因为静态方.. 阅读全文
posted @ 2013-02-27 18:14 vincent_hv 阅读(189) 评论(0) 推荐(0)
摘要:一、代码风格1. 风格务必保持一贯性(Consistent) 在项目里,和其他程序员的程序的风格,显得扃异,那就存在问题了。比如这个缩进,又比如变量命名方法,不同的类,不同的Methods里,各自不同,这 程序就很难看了。所以一旦你选择了某种风格,一定要贯彻始终。如果一个项目里规定了一个风格,即便很不符合你自己的习惯,也要贯彻始终,绝不应该有 标新立异。2. 缩进风格(indent) 既然是从缩进说起,就先说说缩进风格;一般来说,象Java这样的类C语言,都采用缩进风格。而常用的,有四种 : A.K&R风格 这是C程序最早的缩进风格,由C的发明者Ritchie和他的合作者Kern... 阅读全文
posted @ 2013-02-27 18:11 vincent_hv 阅读(812) 评论(0) 推荐(0)
摘要:4.3.1 一个Employee类1、Java中最简单的类的定义形式为:class ClassName { constructor1 constructor2 ... method1 method2 ... field1 field2 ...}注释:这类编码风格是类方法在前,域在后。这样有助于提升注重接口的概念,消减对实现的注意。(这是面向对象编程和面向过程编程思想上最大的区别)2、(例4-2 源代码)EmployeeTest.java[java] view plaincopypackagecom.vincent.javacore.employeetest;publiccla... 阅读全文
posted @ 2013-02-27 18:08 vincent_hv 阅读(181) 评论(0) 推荐(0)
摘要:4.14类之间的关系1.依赖(“use-a”):一个类的方法操纵另一个类的对象。程序设计时应尽可能将这种关系减至最少,即降低耦合度。2.聚合(“has-a”):意味着类A的对象包含了类B的对象3.继承(“is-a”)4.2.1对象与对象变量1.要使用对象就必须先构造对象。使用构造器构造新实例。2.构造器名要与类名相同。例如:Date类的构造器名为Date。要构造一个Date对象要在构造器前加new操作符。如:new Date();3.将对象传递给一个方法:System.out.println(new Date());4.也可以将方法应用于刚创建的对象上:String s = new Date( 阅读全文
posted @ 2013-02-27 18:07 vincent_hv 阅读(222) 评论(0) 推荐(0)
摘要:首先:确定你的jdk环境变量配置是正确的。对于java初学者来说,编译和运行java程序是一件很头疼的东西。显然,在命令方式下编译和运行java程序用久了,确实是很麻烦,而我们又不想使用大型的开发工具时,UltraEdit是一个不错的选择,很多初学者都是用它来编写java源文件的,可以高亮度显示关键字。1、关键字高亮度显示。 打开UltraEdit->视图->高亮显示类型(着色文件类型)->java; 此时在UltraEdit输入java程序时,关键字和java包下的类可以高亮度显示, 还有注释也是啊,如果你不喜欢它的默认色彩,可以自己更改。 在顶层的菜单栏中选择 高级-&g 阅读全文
posted @ 2013-02-27 18:00 vincent_hv 阅读(375) 评论(0) 推荐(0)
摘要:JDK+MyEclipse+Tomcat的配置今天换了新机器,又重新配置了一遍所需的Java环境,找了好久才找到上次用的比较详细的配置方法,折腾的厉害。趁着现在还比较清醒,记录一下,为自己也为大家提供些方便。 1. 安装配置JDK 为了管理方便,此处安装jdk1.6.0_10到C:\Program Files\Java文件夹下,下面进行环境变量的配置。 右键我的电脑—属性—高级—环境变量: (1) 首先,为了指定命令搜索路径,在系统变量的PATH变量中增加C:\Program Files\Java\jdk1.6.0_10\bin;。由于PATH变量中原本含有许多项,所以只需在最前面添加上述路径 阅读全文
posted @ 2013-02-27 17:53 vincent_hv 阅读(165) 评论(0) 推荐(0)