-
Java编程Step-by-step
收藏从零基础开始,如何进行Java编程开发
最近更新文章
70.static自由块
接下来讲讲static自由块。
前面提到了自由块(游离块),那么作为Java源代码特殊的组成部分,是可以用static来修饰的。修饰后的结果我们来分析下。
自由块可以看成是一种特殊的方法,这个方法没有方法名、没有输入参数、没有返回值,不能进行方法调用。从这个角度来看,在自由块前面也可以加上static关键字来修饰。这样,这个自由块就成了静态自由块。静态自由块通常用于初始化静态变量。
...
69.static关键字
接下来零星的讲一些有关Java编程的一些高级特性,以及Java编程的第三大面向对象特性——多态。
这里先来讲讲static关键字。
在Java中,可以将一些成员限制为和类相关的,而不是和实例相关的。实现这个目的的方法是,在类的成员如方法、属性乃至自由代码块前面加上“static”这个修饰符。
实例变量用于描述单个实例的状态,而类变量用于描述类的状态,和具体的实例无关。
实例 ...
68.==和equals()
==和equals()恐怕是刚刚开始学习Java中,最让人混淆的东西了。下面就可以
在Java程序设计中,我们经常需要比较两个变量值是否相等,比如: a = 10; b ...
67.对象的toString()方法
在Object类中,定义了一个toString()方法,用来返回一个表示这个对象的字符串:public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
在这个方法中,它将返回一个由类名、紧随其后的“@”符号和hash码的无符号的十六进制字符 ...
66.封装类
虽然Java语言是典型的面向对象编程语言,但其中的8种基本数据类型并不支持面向对象的编程机制,基本类型的数据不具备“对象”的特性----没有属性、没有方法可调用。沿用他们只是为了迎合程序员根深蒂固的习惯,并能简单、有效地进行常规数据处理。
这种借助于非面向对象技术的做法有时也会带来不便,比如引用类型数据均继承了Object类的特性,要转换为String类型(经常有这种需要)时只要简单调用Objec ...
65.对象的构造以及初始化
有关类的继承的内容大概其就这么多了。之前提过了对象的构造以及初始化。现在在类的继承的基础上,继续来说对象的构造以及初始化,主要讨论子类如何完成继承父类的初始化。
当调用类的构造器来创建对象时,它将给新建的对象分配内存,并对对象进行初始化操作。
现在我们来探讨对对象进行初始化操作时候的细节。
对象的初始化操作将递归如下的步骤来进行:
1.设置实例变量 ...
64.this关键字
1 使用this来区分当前对象
Java中为解决变量的命名冲突和不确定性问题,引入关键字“this”代表其所在方法的当前对象:
构造器中指该构造器所创建的新对象;方法中指调用该方法的对象;在类本身的方法或构造器中引用该类的实例变量和方法。
this只能用在构造器或者方法中,用于获得调用当前的构造器、方法的对象引用。可以和任何的对象引用一样来对处理这个this对象。
下面我们 ...
有必要用StringBuilder的append代替String的+字符串连接运算么
经常会看到在各种Java编程技术文章,讨论如何提高java代码的运行效率。其中最频繁提到的,就是将代码中String类型对象的+字符串连接运算,使用StringBui ...
63.super关键字
在从子类继承父类的过程中,可能需要在子类中调用父类中的成员,如属性、方法或者构造器,这个时候,可以使用super关键字来完成。
super的作用是用于引用父类的成员,如属性、方法或者是构造器。
调用父类构造器
用于调用父类的构造器,是super的用法之一,它的基本格式是: super([arg_list])
直接用super()加上父类构造器所需要的参数,就可以调用父类的构造 ...
60.访问控制
前面讲到了继承,通过继承,可以让子类拥有父类中已经实现的属性和方法,避免在整个软件体系中,出现重复的代码,提高软件的开发效率和可靠性。
但是有的时候,我们希望父类中的某些属性和方法,仅用于父类自己使用,对子类保密。
并且很多时候,当别的对象调用该类对象的时候,也希望这些调用操作是有限制,类的设计只保持部分方法接口公开。
这就需要在类定义的时候,进行访问控制。
在开始时 ...
59.类的继承
在一开始就提到了面向对象编程语言的三大特性:封装、继承和多态。
现在来说说继承。这个特性是基于重用的需求产生的。
面向对象程序设计的一个重要的特点就是类的重用。
这可以通过两种方法来实现:一种是将一个类的实例当作另一个类的属性。也可以使用类的继承来实现,通过关键字extends,可以使一个类继承另一个类,使这个类也具有被继承类的特点。
实现继承的类称为子类,而被继承的 ...
58.多维数组
1.多维数组的定义
Java中支持多维数组,也就是“数组的数组”。
多维数组的声明是通过每一维一组方括号的方式来实现的。
二维数组:int[][],double[][]等。三维数组:float[][][],String[][][]等。
2.多维数组的创建
当使用new 来创建多维数组时,不必指定每一维的大小,而只需要指定最左边的维的大小就可以了。如果你指定了其中的某一维的大 ...
57.数组的拷贝
可以将一个数组变量拷贝给另一个数组变量,这个时候,这两个数组变量均指向同一个数组。通过任何一个数组变量进行操作,均会对另一个数组变量中的数组产生影响。
请看下面这个例子:
public class ArrayCopy1 { public static void main(String[] args) { int[] a = { 12, 3, 19, 2, 10, 13, 9 }; in ...
56.数组元素的引用
可以通过数组名和数组索引来引用一个数组元素。
数组索引可以是一个整数或者一个整数表达式。
注意,数组的索引从0开始到数组长度减1,比如,数组长度为n,则索引的范围为0~(n-1)。
例如,由一个名为arr的长度为10的数组,如果需要取得其中第5个元素的值,只需要通过arr[4]的方式就可以取得了。
在使用数组名加数组索引的方式来取得数组的元素时,注意元素的索引必须小于数组的长度, ...
55.一维数组初始化
在创建成功一个数组后,它将完成如下三个动作:创建一个数组对象;在内存中给数组分配存储空间;给数组的元素初始化一个相应的数据类型的默认值。比如,将int类型的数组各个元素初始化成0,引用类型是null等。
public class ArrayDf { public static void main(String[] args) { int[] intArray; intArray = new i ...
53.控制流程的关键字
使用break语句可以终止switch语句和终止循环的子语句块,甚至是普通的程序块。关于如何终止switch语句,前面已经说过。这里主要说明如何来控制循环语句的执行。
1.break语句
在循环中,经常的,我们需要在某种条件出现时,强行终止循环的运行,而不是等到循环的判断条件为false时,这个时候,可以通过break来完成这个功能。
下面来看一个break的例子: int sum ...
52.Java循环—do..while循环
do…while循环语句的格式如下:[init_expr]do{ body_statement; [alter_expr;]}while( test_expr);
do…while循环类似于while循环,在while后面也得跟一个boolean类型的表达式。do…while循环首先执行里面的代码段,然后再根据test_expr判断是否为true,如果为true,则返回到do语句来执行,否则 ...