JAVA语言编程

2024-11-05

JAVA语言编程(精选12篇)

JAVA语言编程 篇1

1. Java语言的出现

自从1946年世界上第一台电子计算机问世以来, 计算模式的发展经历了三个阶段:集中计算模式、分散计算模式和网络计算模式。Internet的出现, 为在网络计算模式下的科学计算和信息处理提供了良好平台。然而, 要充分利用网络计算模式的功能与效益, 平台的运行环境是个制约因素, 而Java语言和Java技术则是解决这一问题的最佳途径。

2. Java语言的主要特点

Java语言是一种适用于网络编程的语言, 它的基本结构与C++极为相似, 但却简单得多。它集成了其它一些语言的特点和优势, 又避开了它们的不足之处。它的主要特点如下:

2.1 简单性

Java与C++相比, 不再支持运算符重载、多级继承及广泛的自动强制等易混淆和较少使用的特性, 而增加了内存空间自动垃圾收集的功能, 复杂特性的省略和实用功能的增加使得开发变得简单而可靠。简单化的另一个方面是Java的系统非常小, 其基本解释和类支持部分只占40KB, 附加的基本标准库和线程支持也只需增加175KB。

2.2 平台独立性

这是Java最吸引人的地方。由于它采用先编译成中间码 (字节码) , 然后装载与校验, 再解释成不同的机器码来执行, 即“Java虚拟机”的思想, “屏蔽”了具体的“平台环境”特性要求, 使得只要能支持Java虚拟机, 就可运行各种Java程序。

2.3 面向对象的技术

面向对象 (O-O) 的技术是近年来软件开发中用得最为普遍的程序设计方法, , 它通过把客观事物进行分类组合、参数封装、用成员变量来描述对象的性质、状态, 而用方法 (成员函数) 来实现其行为和功能。O-O技术具有继承性、封装性、多态性等众多特点, Java在保留这些优点的基础上, 又具有动态联编的特性, 更能发挥出面向对象的优势。

2.4 多线程

多线程机制使应用程序能并行执行, Java有一套成熟的同步原语, 保证了对共享数据的正确操作.通过使用多线程, 程序设计者可以分别用不同的线程完成特定的行为, 而不需要采用全局的事件循环机制, 这样就很容易实现网络上实时的交互行为。

2.5 动态性

Java的设计使它适合于一个不断发展的环境。在类库中可以自由地加入新的方法和实例变量而不会影响用户程序的执行。并且Java通过接口来支持多重继承, 使之比严格的类继承具有更灵活的方式和扩展性。

2.6 安全性

Java有建立在公共密钥技术基础上的确认技术.指示器语义的改变将使应用程序不能再去访问以前的数据结构或是私有数据, 大多数病毒也就无法破坏数据.因而, 用Java可以构造出无病毒、安全的系统。

Java语言除上述主要特点外, 还有高性能、分布性、强大性、解释性、可移植性等, 此处不再赘述。

3. Java语言的发展

Java自正式问世以来已经历了四年的历程, 时间虽短, 发展极快。一年一度在美国旧金山召开的世界Java One语言开发者大会 (Java One Developer Conference) 盛况空前正说明了这一点。四年中每年的Java One大会, 既是了解Java最新技术动态、应用成果和下一步发展趋势的最好场所, 又是推动下一年Java快速发展的重要动力。

3.1 加速后PC时代的进程

计算机的发展创造了Internet, 但是计算机现在却不是访问Internet的唯一方式。正在出现的信息化、智能化的消费类电子产品打破了PC作为信息终端的垄断地位, 成为人类进入Internet的新门户。信息终端的多元化预示着所谓后PC (post-PC) 时代的到来。消费类的信息终端量大面广, 是典型的瘦客户机, 其本身的资源和能力不能与PC相比, 但必须更加智能化, 并对服务器端的管理提出了更高的要求。而Java平台恰恰满足了这种要求。本次大会推出的Kjava虚拟机能运行在16以上的微处理器上, 占用内存少, 人们可以随心所欲, 在资源有限的设备上方便地开发出各种各样的应用, 直接运行在不同的消费类或其它电子设备上;而Jini的出现为Java网络连接提供了公共标准, 使得任何Java设备都可以连入网络中被自动识别, 并可充分利用网络上已有的各种资源。大力推进Jini的发展是Sun公司加速后PC时代进程的一项重要策略。

4. Java技术

Java发展至今日, 已不仅仅是一种编程语言, 实际上已形成了一门技术.其内容包括:

4.1 Java软件包

Java语言及其编程技术、Java OS、Java开发环境与工具、Java语言的各种软件包、数据库接口JDBC等。

4.2 Java虚拟机及其规范

4.3 Java嵌入技术 (Java芯片)

已推出的有Java戒指、Java卡等。1999年8月2日, Sun公司宣布名为MAJC的专门为Java语言设计的的芯片优化研制成功, 欲与Intel试比高低。该芯片在设计时采用了模块式高性能计算引擎, 实质为一种芯片级并行处理机, 能以更有效的方式分解计算任务, 特别适合处理多媒体数据。Sun公司希望通过MAJC芯片的发布催生出一个基于Java语言的微处理器家族, 与Intel公司竞争。设想中的Java处理器将应用在从低价消费电子产品到高端因特网服务器领域。

4.4 Java计算

基于Java技术的企业Internet/Intranet信息系统以及其他应用系统。

4.5 Jini技术

1999年初正式发布后, 立刻得到业界的广泛支持。Jini的出现为Java网络连接提供了公共标准, 使得任何Java设备都可以连入网络中被自动识别, 并可充分利用网络上已有的各种资源。它把网络上的各类设备 (包括消费类电子设备如移动电话、PDA、DTV、HPC、NC、游戏机、电冰箱、智能卡等等) 和各种软件组合成一个单一、动态的分布式系统, 使网络更易于操纵、易于管理, 具有更高的可配置性。Jini将使网络具有自发性, 它的出现大大扩展了“计算”和“计算机”的含义, 极大地简化了网络操作, 对家庭用户来说, 使用网上设备即插即用, 就像使用电话一样方便。Java和Jini不仅可以不依赖于Windows为代表的操作系统, 而且引导着信息产业的潮流, 使Sun公司能在未来的、非PC类电子产品的数字化市场中强占制高点。

4.6 Jiro平台

异质网络环境中安装的存储系统的多样性和分布性, 给存储管理带来了巨大的挑战。用户和开发人员都希望能有一种技术, 能更好地促进企业存储管理方案的开发。而Jiro平台正是解决此问题的革命性方案。Jiro平台实现了Java和Jini技术, 它是一个便于用户管理异质网络上由各种服务器、存储和设备组成的混合环境的开放式存储管理平台。它对操作系统是中立的。Jiro为跨异质存储局域网 (SAN) 的管理服务和设备提供了一个开放平台, 允许服务器、存储和联网设备在异质网络环境中无缝地协同工作。Jiro平台为开发者带来的好处有:

允许开发者利用各种实现管理存储网络的目标功能创建应用;

提供了一个可以在各种应用、服务和设备之间交互操作的组件模型;

允许设备易被增加、删除;

允许应用或服务被自动更新。

1999年7月, Sun发布了正式的Jiro规范草案, 供公众讨论、修改。目前, Jiro平台的团体成员已超过25家, 支持Jiro平台的厂商超过300家。有眼光的厂商纷纷加入到这些组行列, 从而加快了Jiro的发展。

参考文献

[1]Java语言:信息技术的一次震撼.国家科委信息司.[期刊]科技成果纵横, 1997-05-20.

JAVA语言编程 篇2

import java.util.*;

public class bycomma{

public static String[] splitStringByComma(String source){

if(source==null||source.trim.equals(“”))

return null;

StringTokenizer commaToker = new StringTokenizer(source,“,”);

String[] result = new String[commaToker.countTokens()];

int i=0;

while(commaToker.hasMoreTokens()){

result[i] = commaToker.nextToken();

i++;

}

return result;

}

public static void main(String args[]){

String[] s = splitStringByComma(“5,8,7,4,3,9,1”);

int[] ii = new int[s.length];

for(int i = 0; i

ii[i] =Integer.parseInt(s[i]);

}

Arrays.sort(ii);

//asc

for(int i=0;i

System.out.println(ii[i]);

}

//desc

for(int i=(s.length-1);i>=0;i--){

System.out.println(ii[i]);

}

}

}

2.编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半 个”。

代码:

public static boolean isLetter(char c){

int k=0X80;

return c/k==0?true:false;

}

public static int lengths(String strSrc){

if (strSrc==null){

return 0;

}

int len=0;

char[] strChar=strSrc.toCharArray();

for (int i=0;i

len++;

if (!isLetter(strChar[i])) len++;

}

return len;

}

public static String subString(String origin,int len){

if (origin==null || origin.equals(“”)|| len<1){

return “”;

}

if (len>lengths(origin)){

return origin;

}

byte[] strByte=new byte[len];

System.arraycopy(origin.getBytes(),0,strByte,0,len);

int count=0;

for (int i=0;i

int value=(int)strByte[i];

if (value<0) count++;

}

if (count % 2 !=0){

//len=(len==1)?++len:--len;

--len;

}

return new String(strByte,0,len);

}

public static void main(String[] args) {

System.out.println(“”+ subString(“我ABC汉DEF”,6));

}

3、排序都有哪几种方法?请列举。用JAVA实现一个快速排序。

排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

快速排序的伪代码。

/ /使用快速排序方法对a[ 0 :n- 1 ]排序从a[ 0 :n- 1 ]中选择一个元素作为m I d d l e,该元素为支点把余下的元素分割为两段left 和r I g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点递归地使用快速排序方法对left 进行排序递归地使用快速排序方法对right 进行排序所得结果为l e f t + m I d d l e + r I g h t

//以下为java程序实现的快速排序算法:

public static void sort(int[] data) {

quickSort(data,0,data.length-1);

}

public static void quickSort(int[] data,int low,int high){

int pivotIndex=(low+high)/2;

swap(data,pivotIndex,high);

int k=partition(data,low-1,high,data[high]);

swap(data,k,high);

if ((k-low)>1) partition(data,low,k-1);

if ((high-k)>1) partition(data,k+1,high);

}

public static int partition(int[] data int low,int high, int pivot ){

do {

while (data[++low]

while (high!=0 && data[--high]>pivot);

swap(data,low,high);

}

while (low

swap(data,low,high);

return low;

}

public static void swap(int[] data int low,int high){

int tmp=data[low];

data[low]=data[high];

data[high]=tmp;

}

public static void main(String[] args){

int[] data = new int[]{89,32,425,32,78,1,53,92};

sort(data);

}

4.试用递归的方法写一下计算菲波那契数列的通项f(n),已知f1=1,f2=1,以后每项都是前两项的和。

..............

public static long fibonacci(long m){

if (m==0 || m==1) return m;

else return fibonacci(m-1)+fibonacci(m-2);

}

5. 写一个Singleton出来。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

一般Singleton模式通常有几种种形式:

第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的 getInstance方法获取对它的引用,继而调用其中的方法。

Public class Singleton {

private Singleton(){}

//在自己内部定义自己一个实例,是不是很奇怪?

//注意这是private 只供内部调用

private static Singleton instance = new Singleton();

//这里提供了一个供外部访问本class的静态方法,可以直接访问

public static Singleton getInstance() {

return instance;

}

}

第二种形式:

public class Singleton {

private static Singleton instance = null;

public static synchronized Singleton getInstance() {

//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次

//使用时生成实例,提高了效率!

if (instance==null)

instance=new Singleton();

return instance;

}

}

其他形式:

定义一个类,它的构造函数为private的,所有方法为static的。

一般认为第一种形式要更加安全些

6、创建一个静态方法,给它传入一个对象,请循环的打印出该对象所在类的类名和所实现的方法名(华为笔试最后一道编程)

import java.lang.reflect.*;

public class Test{

public static void test(Object obj){

Class clazz=obj.getClass();

//System.out.println(“类名:”+clazz.getName());

Method[] ms=clazz.getDeclaredMethods();

long len=Array.getLength(ms);

for(int i=0;i

System.out.println(“类名:”+clazz.getName()+“方法名:”+ms[i].getName());

}

}

class A{

public void b(){}

public void c(){}

public void d(){}

public void e(){}

}

public static void main(String[] args){

Test t=new Test();

Test.A a=t.new A();

test(a);

}

}

7、假设字符串类似这样的aba和aab就相等,现在随便给你二组字符串,请编程比较他们看是否相等

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String s = null;

try {

s = br.readLine();

} catch (IOException e) {

e.printStackTrace();

}

StringTokenizer st = new StringTokenizer(s);

String s1 = st.nextToken();

String s2 = st.nextToken();

byte[] sa1 = s1.getBytes();

byte[] sb2 = s2.getBytes();

Arrays.sort(sa1);

Arrays.sort(sb2);

String ss1 = new String(sa1);

String ss2 = new String(sb2);

if(ss1.equals(ss2))

System.out.println(“equal”);

else

System.out.println(“not equal”);

8、给你一组字符串如:iu7i8hy4jnb2,让你编程输出里面的数字:7842

用正规表达式:“iu7i8hy4jnb2”.replaceAll(“[^d]”,“”);

9、给你一组字符串让你把它倒叙输出

public static String flashBack(String origin) {

String result = “”;

for (int i = origin.length(); i >0; i--) {

String tmp = origin.substring(i - 1, i);

result += tmp;

}

return result;

}

10、给你一组字符如{1,3,4,7,2,1,1,5,2},让你输出里面出现次数最多且数值最大的一个,出现几次

public void fun4() {

int[] a = { 4, 1, 2, 4, 5, 1, 1, 1, 5, 1, 3, 4, 5 };

Arrays.sort(a);

for (int i = 0; i < a.length; i++) {

System.out.print(a[i] + “ ”);

}

System.out.println();

int maxNumber = a[a.length - 1], maxCount = 1;

int curNumber = a[a.length - 1], curCount = 1;

for (int i = a.length - 1; i >0; i--) {

curNumber = a[i];

if (a[i] == a[i - 1]) {

curCount++;

} else {

System.out.println(“i=” + i + “,curCount=” + curCount+ “,maxCount=” + maxCount + “,maxNumber=” + maxNumber);

if (curCount >maxCount) {

maxCount = curCount;

maxNumber = curNumber;

}

curCount = 1;

}

}

if (curCount >maxCount) {

maxCount = curCount;

//maxNumber = curNumber;

}

System.out.println(“curCount=” + curCount + “,maxCount=” + maxCount + “,maxNumber=” + maxNumber);

}

11、求两个数的公约数,M,N

int divisor =1;

for (int i = 2; i <= b; i++) {

if(a%i==0 && b%i==0){

divisor = i;

}

}

System.out.println(a+“和”+b+“的最大公约数是:”+divisor);

}

12、实现数组复制

public void fun8(){

int[] a = {1,2,3,4,56,7,8};

int[] b = (int[])a.clone();

Conica.print(a);

Conica.print(b);

b[0]=100;

Conica.print(a);

Conica.print(b);

}

13、冒泡排序的实现

public void fun9(){

int[] a = {1,5,2,6,8,74,1,25,69,8};

Conica.print(a);

for(int i=0; i

for(int j=0; j

if(a[j]>a[j+1]){

int temp = a[j];

a[j] = a[j+1];

a[j+1] = temp;

}

}

}

Conica.print(a);

}

14、编程显示某一文件目录下的文件名

public void fun10(){

File file = new File(“G:�3月份”);

if(file.exists()){

if(file.isDirectory()){

String[] files = file.list();

Conica.println(files);

}

}

}

15、从键盘输入4个十进制数字字符,将其转换为4位时间之数并显示出来

16、编程实现统计文本文件中某个单词的出现频率,并输出统计结果

用HashMap来解决

假设单词不存在跨行的,每个单词用,. ;分割

public static void countNum() throws IOException {

BufferedReader br = null;

try {

br = new BufferedReader(new FileReader(“c://file.txt”));

Map map = new HashMap();

for (String s = br.readLine(); s != null; s = br.readLine()) {

StringTokenizer st = new StringTokenizer(s, “,. ;”);

while (st.hasMoreTokens()) {

String temp = st.nextToken();

if (map.containsKey(temp)) {

map.put(temp, new Integer((Integer)map.get(temp) + 1));

} else {

map.put(temp, new Integer(1));

}

}

}

for (Iterator it = map.entrySet().iterator(); it.hasNext();) {

Map.Entry entry = (Map.Entry) it.next();

System.out.println(entry.getKey() + “-->” + entry.getValue()

+ “times”);

}

} finally {

br.close();

}

}

17、编程模仿DOS下的dir命令,列出某个目录下的内容

18、编程说明String和StringBuffer字符串的区别

19、编程计算N!的程序,一个使用递归方法,一个不用递归方法

递归 :

long fuction(int n){

if (n==0) return 1;

else

return n* fuction(n-1);

}

不递 :

long s=1;

for(int i=2;i<=n;i++)

{

s*=i;

}

20、编程实现ASCII码和Unicode码之间的转换

21.用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求: “4 ”不能在第三位, “3 ”与 “5 ”不能相连.

此题具体算法及程序可参考:

topic.csdn.net/u/0114/14/1170e023-e8f0-4331-8bd8-516c6f1e40da.html

22。一个字符串中可能包含a~z中的多个字符,如有重复,如String data=“aavzcadfdsfsdhshgWasdfasdf”,求出现次数最多的那个字母及次数,如有多个重复的则都求出。〔金山公司面试题〕

import java.util.ArrayList;

import java.util.Collections;

import java.util.Iterator;

import java.util.TreeSet;

public class FindRepeatChar {

public static void doString(String strInput) {

char[] chars = strInput.toCharArray();

ArrayList lists = new ArrayList();

TreeSet set = new TreeSet();

for (int i = 0; i < chars.length; i++) {

lists.add(String.valueOf(chars[i]));

set.add(String.valueOf(chars[i]));

}

System.out.println(set);

Collections.sort(lists);

System.out.println(lists);

StringBuffer sb = new StringBuffer();

for (int i = 0; i < lists.size(); i++) {

sb.append(lists.get(i));

}

strInput = sb.toString();

System.out.println(strInput);

int max = 0;

String maxString = “”;

ArrayList maxList = new ArrayList();

for (Iterator its = set.iterator(); its.hasNext();) {

String s = (String) its.next();

int begin = strInput.indexOf(os);

int end = strInput.lastIndexOf(os);

int value = end - begin + 1;

if (value >max && value >1) {

max = value;

maxString = os;

maxList.add(os);

} else if (value == max) {

maxList.add(os);

}

}

int index = 0;

for (int i = 0; i < maxList.size(); i++) {

if (maxList.get(i).equals(maxString)) {

index = i;

break;

}

}

System.out.println(“出现最多的字符为:”);

for (int i = 0; i < maxList.size(); i++) {

System.out.println(maxList.get(i) + “”);

}

System.out.println();

System.out.println(“出现最多的次数为:” + max);

}

public static void main(String[] args) {

String strInput = new String(“aavzcadfdsfsdhshgWasdfasdf”);

doString(strInput);

}

}

23.金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)->(一千零一拾一元整)输出。

package test.money;

import java.text.NumberFormat;

import java.util.HashMap;

public class SimpleMoneyFormat {

public static final String EMPTY = “”;

public static final String ZERO = “零”;

public static final String NE = “壹”;

public static final String TWO = “贰”;

public static final String THREE = “叁”;

public static final String FOUR = “肆”;

public static final String FIVE = “伍”;

public static final String SIX = “陆”;

public static final String SEVEN = “柒”;

public static final String EIGHT = “捌”;

public static final String NINE = “玖”;

public static final String TEN = “拾”;

public static final String HUNDRED = “佰”;

public static final String THOUSAND = “仟”;

public static final String TEN_THOUSAND = “万”;

public static final String HUNDRED_MILLION = “亿”;

public static final String YUAN = “元”;

public static final String JIAO = “角”;

public static final String FEN = “分”;

public static final String DOT = “.”;

private static SimpleMoneyFormat formatter = null;

private HashMap chineseNumberMap = new HashMap();

private HashMap chineseMoneyPattern = new HashMap();

private NumberFormat numberFormat = NumberFormat.getInstance();

private SimpleMoneyFormat() {

numberFormat.setMaximumFractionDigits(4);

numberFormat.setMinimumFractionDigits(2);

numberFormat.setGroupingUsed(false);

chineseNumberMap.put(“0”, ZERO);

chineseNumberMap.put(“1”, ONE);

chineseNumberMap.put(“2”, TWO);

chineseNumberMap.put(“3”, THREE);

chineseNumberMap.put(“4”, FOUR);

chineseNumberMap.put(“5”, FIVE);

chineseNumberMap.put(“6”, SIX);

chineseNumberMap.put(“7”, SEVEN);

chineseNumberMap.put(“8”, EIGHT);

chineseNumberMap.put(“9”, NINE);

chineseNumberMap.put(DOT, DOT);

chineseMoneyPattern.put(“1”, TEN);

chineseMoneyPattern.put(“2”, HUNDRED);

chineseMoneyPattern.put(“3”, THOUSAND);

chineseMoneyPattern.put(“4”, TEN_THOUSAND);

chineseMoneyPattern.put(“5”, TEN);

chineseMoneyPattern.put(“6”, HUNDRED);

chineseMoneyPattern.put(“7”, THOUSAND);

chineseMoneyPattern.put(“8”, HUNDRED_MILLION);

}

public synchronized static SimpleMoneyFormat getInstance() {

if (formatter == null)

formatter = new SimpleMoneyFormat();

return formatter;

}

public String format(String moneyStr) {

checkPrecision(moneyStr);

String result;

result = convertToChineseNumber(moneyStr);

result = addUnitsToChineseMoneyString(result);

return result;

}

public String format(double moneyDouble) {

return format(numberFormat.format(moneyDouble));

}

public String format(int moneyInt) {

return format(numberFormat.format(moneyInt));

}

public String format(long moneyLong) {

return format(numberFormat.format(moneyLong));

}

public String format(Number moneyNum) {

return format(numberFormat.format(moneyNum));

}

private String convertToChineseNumber(String moneyStr) {

String result;

StringBuffer cMoneyStringBuffer = new StringBuffer();

for (int i = 0; i < moneyStr.length(); i++) {//123363

cMoneyStringBuffer.append(chineseNumberMap.get(moneyStr.substring(

i, i + 1)));

}

// 拾佰仟万亿等都是汉字里面才有的单位,加上它们

int indexOfDot = cMoneyStringBuffer.indexOf(DOT);

int moneyPatternCursor = 1;

for (int i = indexOfDot - 1; i >0; i--) {

cMoneyStringBuffer.(i, chineseMoneyPattern.get(EMPTY

+ moneyPatternCursor));

moneyPatternCursor = moneyPatternCursor == 8 ? 1

: moneyPatternCursor + 1;

}

String fractionPart = cMoneyStringBuffer.substring(cMoneyStringBuffer

.indexOf(“.”));

cMoneyStringBuffer.(cMoneyStringBuffer.indexOf(“.”),

cMoneyStringBuffer.length());

while (cMoneyStringBuffer.indexOf(“零拾”) != -1) {//inclusive. exclusive.

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零拾”),

cMoneyStringBuffer.indexOf(“零拾”) + 2, ZERO);

}

while (cMoneyStringBuffer.indexOf(“零佰”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零佰”),

cMoneyStringBuffer.indexOf(“零佰”) + 2, ZERO);

}

while (cMoneyStringBuffer.indexOf(“零仟”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零仟”),

cMoneyStringBuffer.indexOf(“零仟”) + 2, ZERO);

}

while (cMoneyStringBuffer.indexOf(“零万”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零万”),

cMoneyStringBuffer.indexOf(“零万”) + 2, TEN_THOUSAND);

}

while (cMoneyStringBuffer.indexOf(“零亿”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零亿”),

cMoneyStringBuffer.indexOf(“零亿”) + 2, HUNDRED_MILLION);

}

while (cMoneyStringBuffer.indexOf(“零零”) != -1) {

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零零”),

cMoneyStringBuffer.indexOf(“零零”) + 2, ZERO);

}

if (cMoneyStringBuffer.lastIndexOf(ZERO) == cMoneyStringBuffer.length() - 1)

cMoneyStringBuffer.(cMoneyStringBuffer.length() - 1,

cMoneyStringBuffer.length());

cMoneyStringBuffer.append(fractionPart);

result = cMoneyStringBuffer.toString();

return result;

}

private String addUnitsToChineseMoneyString(String moneyStr) {

String result;

StringBuffer cMoneyStringBuffer = new StringBuffer(moneyStr);

int indexOfDot = cMoneyStringBuffer.indexOf(DOT);

cMoneyStringBuffer.replace(indexOfDot, indexOfDot + 1, YUAN);

cMoneyStringBuffer.(cMoneyStringBuffer.length() - 1, JIAO);

cMoneyStringBuffer.(cMoneyStringBuffer.length(), FEN);

if (cMoneyStringBuffer.indexOf(“零角零分”) != -1)// 没有零头,加整

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零角零分”),

cMoneyStringBuffer.length(), “整”);

else if (cMoneyStringBuffer.indexOf(“零分”) != -1)// 没有零分,加整

cMoneyStringBuffer.replace(cMoneyStringBuffer.indexOf(“零分”),

cMoneyStringBuffer.length(), “整”);

else {

if (cMoneyStringBuffer.indexOf(“零角”) != -1)

cMoneyStringBuffer.(cMoneyStringBuffer.indexOf(“零角”),

cMoneyStringBuffer.indexOf(“零角”) + 2);

// tmpBuffer.append(“整”);

}

result = cMoneyStringBuffer.toString();

return result;

}

private void checkPrecision(String moneyStr) {//5336.53663 10-5-1

int fractionDigits = moneyStr.length() - moneyStr.indexOf(DOT) - 1;

if (fractionDigits >2)

throw new RuntimeException(“金额” + moneyStr + “的小数位多于两位。”); // 精度不能比分低

}

public static void main(String[] args) {

System.out.println(getInstance().format(new Double(8951.11)));

}

}

Java语言的微课设计 篇3

关键词: 微课 Java语言 课程教学

1.引言

微课是一种短小精悍的课程,首先它符合课程的特征,即是一种教学科目,具备预期的学习结果或目标,是一种学习经验或体验。微课和一般的学科性课程和实践性课程的主要区别是时长很短,基本控制在5分钟至15分钟,集中说明一个教学问题,其特点是泛在性、可视化、关联性。微课得益于计算机网络的发展,当超文本、海量的数据在网络上出现后,微课以其数字化资源为主要特征的形式发展起来。

微课不是在中国首次出现的教学形式,张一川、钱扬义[1]论述了国内外微课资源建设与应用进展,早在2008年,美国新墨西哥州胡安学院的戴维彭罗斯就正式提出了微课的概念。杨明[2]就高职教育阶段实施微课开发进行了大讨论,分别从利用微课做好教学研究、实践教学与社会服务、学生课内与课外的活动等三个方面详细论述高职教育中融入微课技术的建议。

2.微课的设计

要搞好微课的设计,必须掌握以下几个基本原则:课程结构具备独立性、课程设计具备模块化和知识内容具备微型化。

课程结构具备独立性是指微课以独立的结构出现,尽管微课之间是存在松散耦合的关系,但是单个微课有完整的教学目标、教学过程、教学评价等内容。

课程设计模块化是指将一门课程设计成微课的时候,由于时间限制,因此需要将课程首先进行有机的分割,成为彼此之间有互相关联的模块,然后根据模块的内容制作微课。

知识内容具备微型化是指微课所传授的内容不是长篇大论,而是将一门课程的知识点根据知识结构碎片化,使之成为微型的知识模块。

微课的设计必须有明确的教学目标,针对核心概念,清晰地说明主题。同时应该有丰富的教学策略,利用足够的教学资源,提供不同层次的练习,帮助学习者完成集中而又完整的知识总结。在学习评价阶段,要提供离线或在线的习题,健全信息反馈系统,让学习者在第一时间得到有价值的反馈。

3.Java语言的微课设计

《Java语言程序设计》是我校计算机网络技术的专业核心课程,由于该课程本身原理性强、知识点丰富,而高职阶段又要求突出学生对程序的编写与调试能力,因此为了更好地教学,本课程组将该课程的重点与难点以微课的形式,让学生随时随地都能巩固学习。

微课的设计有一个流程,从知识萃取到教学设计再到媒体设计。在实施微课设计的时候,要遵循如下的流程。

首先是知识的萃取,先将该课程形成工作過程导向的课程,创设出四个学习情境,将每一个学习情境转化为若干个项目。由于项目彼此之间存在前后的关联性,因此根据项目设计的微课就有关联性。例如在基本编程思想确立的学习情境中,学生基本信息系统项目中出现了Java的基本语法,主要是不同数值类型的介绍及变量与常量的应用。这里,变量与常量就是教学难点,很多学生知道变量是一种可变的数值定义形式,而常量却是不能产生变化的数值定义形式,但是应用起来却很困难。

我们进行了变量与常量的微课设计,微课的名字很重要,要吸引学生观看。我们取名为“认识变量与常量的区别”,为什么不提定义和应用呢?主要是学生会感觉到定义和应用已经是他们知道的内容,他们现在比较关心的是两者的区别。

教学设计我们以1+1+1的形式,即引入一个案例,灌输一个知识,说明一个问题。我们引入的案例是在房子里放入两个盒子。房子代表的是计算机内存,盒子代表的是内存的一部分空间。当盒子没有加锁的时候,那么盒子里的东西是可以更换的,只要东西存放进盒子。这样的盒子就是变量,而里面存放的东西就是变量的值。如果盒子是加锁之后放进房间的,那么盒子里的东西就不能更换,原来是什么,现在还是什么。这样的盒子类似于常量,一旦被定义了,那么常量的值就不能产生变化。

接着我们会让学生上机操作,定义和初始化变量与常量,变量的值在定义结束后还能重新赋值,所以是一种可变的状态,但是常量一旦初始化后就不能重新被赋值,一旦再次赋值,编译器就直接报错。

学生通过盒子的形式,牢牢记住了常量与变量的区别,上机的过程无非就是学会如何定义常量和变量。通过这样的学习,学生对本来很难的内容就记在心里了,以后再碰到这样的问题,迎刃而解。

微课的制作我们采用了录屏软件,由于盒子放进房间的状态,我们设计的Flash动画,并提示回答信息,两个盒子中哪个盒子的存放的东西可以产生变化。通过简单动画演示,学生根据自身的社会经验,非常清楚地认识到加锁的盒子与不加锁的盒子的区别,进而思维迁移到常量与变量。

微课设计的关键在于脚本的制作,所谓脚本是定义知识的演变与连贯,一个好的脚本往往能决定微课的成功与否。我们将整个微课场景做成脚本,包括解说词与字幕,并反复推敲与琢磨。在录制视频的时候,根据脚本设置的内容,录制一段段录像或者动画。

4.结语

微课是一种以引导的方式进行教学的特殊教育形式,依托网络的发展与信息的膨胀,在传统课堂教学中科学、合理地引入微课,对现阶段的高职教育有一定的促进作用,让学生充分利用课余时间进行有效的学习。

参考文献:

[1]张一川,钱扬义.国内外微课资源建设与应用进展[J].远程教育杂志,2013(6):26-33.

[2]杨明.高职教育微课开发综合讨论[J].职教论坛,2014(6):65-70.

JAVA语言编程机制及实现研究 篇4

1 JAVA编程平台的搭建

要想用JAVA编程首先要搭建起环境。到Oracle网站上下载相应的JAVA版本并安装, 安装之后要对它进行环境变量的配置。配置可分为永久配置和临时配置。

1.1 永久性配置

在某台机器上经常用JAVA开发程序, 可以永久性配置环境变量, 主要完成以下三方面的配置。

Path:jdk开发工具包中bin的路径。

JAVA_HOME:jdk开发工具包的路径。

CLASSPATH:类文件的运行路径。

在配置过程中有可能出现如下错误:

(1) C:UsersAdministrator>javac’javac’不是内部或外部命令, 也不是可运行的程序或批处理文件。

(2) (*.class) 文件, 这是因为path的路径配置不正确。

1.2 临时性配置

在某台机器上只是临时开发JAVA程序, 可以用set命令临时设置path和CLASSPATH的路径。

2 JAVA程序的运行机制和运行过程

JAVA程序是通过编写、编译、运行三个步骤来实现。

2.1 JAVA的两种核心机制

JAVA虚拟机和垃圾收集处理机制。JAVA虚拟机实现了JAVA语言的平台无关性;垃圾收集处理机制实现了JAVA语言的健壮性。

2.2 JAVA的运行过程

JAVA的运行过程如图1所示:

通过记事本或其他能编辑器编写JAVA程序, 先要用javac命令由JAVA编译器编译成中间的字节码即.class文件。然后通过JAVA命令执行对应的class文件, 该class文件调用类载1器等, 最后通过不同平台上的JAVA虚拟机来实现跨平台性。具体的执行过程如图2所示:

3 输出结果

实现简单输出的JAVA程序。

该程序通过执行javac temp.java, 调用JAVA编译器, 生成一个对应的temp.class字节码文件。通过执行java temp调用类加载器等, 最后通过不同平台的JVM来实现输出结果。

4 结语

综上所述, JAVA程序网络编程是一项较为复杂且系统的工作, 在实际操作中合理运用JAVA语言编写程序, 通过编译器、加载器等, 实现不同系统平台的JVM来实现所需求的结果, JAVA语言编程在计算机网络编程中的价值也随之得以体现。

参考文献

[1]Bruce Eckel.Java编程思想 (第四版) [M].北京:机械工业出版社, 2007.

JAVA语言编程 篇5

作为世界上使用最广的语言之一,Java 的拥趸和其他语言的粉丝常常在各大论坛掀起世界大战。

Java 说『Write Once,Run Anywhere』

但还有人说 『Write Once,Debug Anywhere』

有人说他语法简单,功能强大。

可也有人说与许多新兴语言相比,他有些细节上的不足。

所以,Java 对你来说究竟是什么?

你可曾想过,学习Java编程之后,你就只能做Java程序员吗?其实。。

学习Java编程可以往很多方向发展

Java的应用非常广,有erp等大型系统方面的,有web方面的,还有游戏方面的。作为小白,你需要从Java初级学,然后中级,之后你还需要再学习更多的技术,这些技术不仅仅局限于Java,如js和数据库等,当你对整套技术都非常精通时,你便是一个真正的高级工程师,而java则只是你所掌握的主要技术之一罢了。

做软件测试是一个方向

不少人学到Java SE基础阶段,可能往软件测试方向发展,这个时候参与具体的编码工作不会那么多,主要要做的工作是对软件产品的需求文档、设计文档等检查是否有歧义,对软件产品本身的功能、性能通过运用专业的软件测试技术以及工作去发现软件产品中隐藏的软件问题。

转Android开发是一个方向

Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择。学Android从事移动互联方向开发,学Java从事软件、网站开发。而安卓上的应用大多是Java编写的,所以学习了Java编程,转Android开发也是可以的。

转web前端开发、PHP开发、大数据。。

其实,Java对你来说,不过是众多恋人之一,作为初恋,她打开了你学习编程的大门。至于以后你是从事前端开发,或PHP开发,亦或Android开发,甚至搞大数据、数据库,这些都是互不干扰的。

JAVA语言编程 篇6

关键词:计算机软件;开发;JAVA编程语言

中图分类号:TP312.2 文献标识码:A 文章编号:1674-7712 (2014) 06-0000-01

计算机应用技术的发展推动了JAVA程序的开发应用。起初,JAVA语言被命名为OAK,主要用于家用小型电器的编程语言中,从而有效地解决了家用电器的控制问题,比如电视机、冰箱以及闹钟等。随着智能化技术的市场需求和发展,OAK在互联网的应用前景越来越广泛,因而JAVA语言逐渐代替OAK,成为一种单纯地面向对象的程序设计语言。

一、JAVA编程语言的特点分析

与传统的编程语言相比较,JAVA编程语言具有更加方便快捷的优势,同时在传统的编程运用上有了更新的发展。经过不断地发展和改进,JAVA编程语言能够兼容多种计算机种类的操作系统,还能够根据实际情况实现跨平台的操作。JAVA编程语言主要有以下特点:

(一)实用性

JAVA编程语言能够将系统中的内存空间进行智能化收集、处理,从而可以有效地保持系统运行的速度。同时,JAVA编程语言主要应用于网络及其分布式的环境中,能够拥有多个阶层的互锁保护功能,从而及时地避免黑客和病毒的侵入和破坏,保障计算机系统的安全。

相对于C语言,JAVA编程语言具有动态性,尤其是能够更好地适应不断变化的环境。即使程序库已经更新,JAVA编程语言也可以继续沿用之前的编译程序。

(二)广泛性

通常,互联网是由多个不同种类的机器所组合而成的。因此,如何能够使一个应用程序能够在多个机器上执行相关操作是编程语言设计的重点。JAVA编程语言中的编译器能够产生一种文件格式(Object File Format),具有结构中立的优点,进而能够在多个处理器中顺利地运行。作为一种跨平台的编程语言,JAVA能够轻松地将一个环境转移到另一个环境中。比如,用户能够在Web网站上灵活地下载和使用该应用程序,包括图像和HTML等。

(三)简易性

JAVA编程语言主要利用C++面向对象的相关概念[1]。JAVA程序能够自动地将输入的数据装入类中,类在实现程序的简易性中具有独特的优点。因此,程序设计人员只要将大部分精力用于对类和接口的科学设计和应用上。同时,JAVA编程语言还能够将一些不常用的能力进行自动地删除,以降低编程语言设计的复杂性,便于用户更好地掌握。在计算机软件的编写工作中,JAVA编程语言具有更加方便和快捷的优点。

(四)独立性

JAVA虚拟机是一种建立在硬件和操作系统之间的接口,可以顺利地解释JAVA二进制代码。JAVA编程语言将JAVA虚拟机视为一种独立的思想向导,将起初编译的中间码进行自动地校验,可以适应平台环境的特殊要求。简而言之,如果一套计算机系统能够运行JAVA虚拟机,那么该系统就可以实现相关的JAVA编程语言程序设计工作。

二、关于计算机软件开发的JAVA编程语言相关应用探究

JAVA编程语言在计算机软件的开发中得到了良好应用。本文主要探究的是JAVA编程语言在Internet和电子商务中的应用。

(一)Java相关技术在Internet中的应用

Internet中web服务器的发展为人们更加方便快捷地获取信息提供了良好途径。其中web服务器也称为WWW服务器,其主要功能是为用户提供一些网上信息浏览的相关服务。其中,Tomcat是一个免费的开源Serlvet容器[2]。作为Jakarta项目中的一个重点部分,Tomcat具有性能稳定、免费的优点,因而深受广大用户的欢迎。目前,Tomcat的最新版本是8.0。当计算机的配置正确时,Apache能够为HTML页面服务,同时也能够对HTML的相关页面进行处理,具有和IIS服务器相同的功能。

WWW服务器上所提供的浏览信息丰富多彩,不仅具有文本形式和语音形式,而且还具有影视、卡通动漫以及图像等。这些不同模式的信息资源可以在JAVA编程语言的设计下,进行组合、归纳和集成。同时,JAVA编程语言还可以在此基础上衍生出更多具有创意性的产品,比如影视作品和文学艺术等。Tomcat通过借助JAVA应用平台,能够安全地运行并且支持WEB的应用部署。尤其是在Tomcat在以系统管理员的身份运行时,JAVA程序运行能够获得用户系统的全部权限。也就是说,JAVA运行时能够获得所有系统文件夹中文件设置的权限。因此,JAVA可以采用代码的形式,将SDK中的文件API和文件夹中的文件进行合理地调用,不仅可以方便用于提取所需信息,而且还能够保障系统的安全。

(二)Java相关技术在电子商务系统的应用

电子商务系统中JAVA 相关技术扮演着重要的角色。尤其是随着现代电子商务的不断发展,JAVA相关技术的应用能够极大地提高工作效率。

例如,在电子商务的发展过程中,为了达到某种功能,JSP、servlet以及其他的相关资源会自动地组合成一个系统单元。JAVA作为一个理想的编程模型,能够极大地减少系统开发设计中的工作量,同时也可以方便进行后台和后期管理。其中HTML文件主要是以一种静态的形式出现,反应时间较快,但是不具有灵活性。因此,JAVA编程的应用能够对HTML语言进行科学设计,提供一种有效地动态机制[3]。用户只需要进行简单地操作,进行数据的确认,从而可以满足自身的信息需求。这种操作可以在JAVA应用平台上顺利完成。同时,JSP作为一种面向web服务器的相关技术,不需要用户任何的附件支持,其代码可以在编译后由JAVA虚拟机直接执行,从而为用户提供了一个基于JAVA的服务器解决方案。

三、结书语

综上所述,作为一种针对计算机网络开发的专业语言,JAVA编程语言具有一定的优点。互联网时代的到来,JAVA编程语言的设计更加科学化、人性化、合理化。JAVA编程语言在计算机软件的开发过程中得到了良好的应用,为提高计算机软件的开发水平发挥了重要作用。

参考文献:

[1]伍睿恩,基于计算机软件开发的JAVA编程语言分析[J].信息通信,2013(01):55.

[2]杨小琴,JAVA程序设计语言的一点体会[J].电脑知识与技术,2011(03):63.

浅论Java语言应用研究 篇7

1.1 平台无关

平台无关是指Java能运行于不同的平台。Java引进虚拟机原理, 并运行于虚拟机, 实现不同平台的Java接口之间。使用Java编写的程序能在世界范围内共享。Java的数据类型与机器无关, Java虚拟机 (Java Virtual Machine) 是建立在硬件和操作系统之上, 实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。

1.2 安全

Java的编程类似C++, 学习过C++的读者将很快掌握Java的精髓。Java舍弃了C++的指针对存储器地址的直接操作, 程序运行时, 内存由操作系统分配, 这样可以避免病毒通过指针侵入系统。Java对程序提供了安全管理器, 防止程序的非法访问。

1.3 面向对象

Java吸取了C++面向对象的概念, 将数据封装于类中, 利用类的优点, 实现了程序的简洁性和便于维护性。类的封装性、继承性等有关对象的特性, 使程序代码只需一次编译, 然后通过上述特性反复利用。

1.4 分布式

Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。

1.5 应变能力

Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组, 避免了覆盖数据的可能, 这些功能特征大大提高了开发Java应用程序的周期。并且Java还提供了Null指针检测、数组边界检测、异常出口、Byte code校验等功能。

2 Java语言的四大应用领域

Java技术自1995年问世以来, 在我国的应用和开发也得到了迅速普及, 总体来看, 这些应用主要集中于企业应用开发。据有关单位调查显示, 从开发领域的分布情况上看Web开发占了一半以上, 为57.9%, Java ME移动或嵌入式应用占15%, C/S应用占11.7%, 系统编程占15.4%。近30%的开发者用Java从事C/S应用或系统级应用的开发。在桌面应用上, 尽管Java在桌面GUI方面尚有不尽如人意之处, 但仍然有很多开发者用来开发运行在多种操作系统平台上的桌面应用。具体应用在如下几个领域。

2.1 行业和企业信息化

由于Sun、IBM、Oracle、BEA等国际厂商相继推出各种基于Java技术的应用服务器以及各种应用软件, 带动了Java在金融、电信、制造等领域日益广泛的应用。如清华大学计算机系利用Java、XML和Web技术研制开发了多个软件平台, 东方科技的Tong Web、金碟的Apusic、中创的Inforweb等J2EE应用服务器及和佳ERP和宝信ERP等ERP产品, 已在许多企业得到应用。

2.2 电子政务及办公自动化

东方科技、金碟、中创等开发的J2EE应用服务器在电子政务及办公自动化中也得到应用:如金碟的Apusic在民政部、广东省市工商局应用;东软电子政务架构EAP平台在社会保险、公检法、税务系统得到应用;中创的Inforweb等Infor系列中间件产品在国家海事局、政府机关、银行等金融系统应用;基于Java平台开发的国产化集成办公软件"Office"也已在一些省市政府部门得到应用。

2.3 嵌入式设备及消费类电子产品

无线设备、通信终端、医疗设备、信息家电 (如数字电视、机顶盒、电冰箱) 、汽车电子设备等是今年以来比较热门的Java应用领域。在这方面的应用有中国联通CDMA 1X网络中基于Java技术的无线数据增值服务。

2.4 辅助教学

在辅助教学方面, 东南大学与中兴通讯公司开发了远程教学系统, 用于本地网上教学、课后学习和异地远程教育, 清华大学用Java进行了"计算机软件基础课"教学改革, 分析研究Java教学软件的汉化方案, 电子科技大学应用Java RMI技术进行远程教育, 西安电力高等专科学校采用Java技术, 开发了交互式电站仿真系统, 实现电站锅炉仿真、锅炉膛火焰仿真, 为实现网上仿真进行有益探索。

3 Java开发注意事项

3.1 政府主管部门要把Java技术及应用

作为落实“十二五”软件及信息产业发展规划的重要环节, 继续支持开发有自主版权的软件产品, 支持建立Java技术产品评测中心, 加强对相关产品的质量监管。

3.2 各行业主管部门及行业协会应积极

比对等的JAVA程序跑得更快了。随后的JDK 5.0和6.0进一步提高了执行性能, 由不同的组织举行的多项评测结果表明, JAVA与C语言的整体执行效率差距在一倍以内, 也就是说, 素以速度著称、并且为了速度放弃了很多东西的C语言, 现在比装备齐全的JA-VA只快不到一倍了。这还不算, 如果考虑到新的计算环境, C语言的速度优势有可能仅仅是一个错觉。因为, 世界上只有很少的人有能力在多CPU计算平台上用C语言写出又快又正确的大程序, 在这些人中间, 又只有很少的人有能力用C语言写出一个在大型的、异构的网络环境下能够充分发挥各节点计算能力的大规模并行程序。

4.2 功能。

C语言调试错误时间很长, 特别是内存方面的错误。大部分用C写的上规模的软件都存在一些内存方面的错误, 需要花费大量的时间把产品稳定下来。这还没有把安全方面的缺陷考虑在内, 现在大部分的开发者在代码安全方面的知识都很薄弱, 安全漏洞在代码中相当普遍, 而在C语言中, 这一不足格外明显。最大的挑战或许得说是并发问题了, 并发是一个很复杂的问题, 需要在相当高的抽象层面上解决, 而C语言的抽象机制过于简单, 提供不了高层的抽象, 因此在开发者只能从一些"并发原语"出发去构造并发程序, 这跟用铅笔刀锯大树没什么分别, 直截了当地说, 大部分C程序员根本没有能力编写高效无缺陷的并发程序。用C语言写单机、单线程的, 不会遭到外界攻击的, 在时间预算上没有什么压力, 而且用户能够忍受一个很长的产品稳定期的应用程序方面非常有经验。但是, 市场环境和计算环境已经完全变化。面对更复杂的计算环境, 用C语言来编写高质量的大规模软件, 是只有真正的专家团队才能完成的工作。相比之下, JAVA在抽象机制、基础设施、安全和并发方面, 与C语言对比, 有优势。

摘要:本文主要阐述Java语言的特点与优势, Java语言的四大应用领域, Java开发注意事项以及JAVA与C语言对比。

关键词:Java,应用,对比

参考文献

[1]林胜利, 路宗强, 王坤茹等.Java智能卡开发关键技术与实例[M].北京.中国铁道出版社.2006.

Java动画编程优化技术 篇8

Java的动画编程,为了不断更新屏幕显示图像,一般采用创建线程,在线程中调用帧图像循环的方法实现动画。而如果在主线程中调用动画循环,则会占用过多CPU资源而影响程序效率,并且不利于动画程序的调用控制。因此,应单独创建一个实现动画循环的动画线程,当动画循环完成后,应及时停止该线程以释放CPU资源,即在程序中将线程置为null,代码为:animatorThread=null。如需同时实现多个动画显示,可利用Java多线程技术,利用主AWT线程调用其余各线程,图像过大时可采用其后所述技术优化动画显示效果。

动画显示不平滑甚至发生闪烁的原因是因为图像更新的频率与屏幕的刷新频率不一致造成的。发生闪烁有两个原因:一是由于在显示下一帧画面的时候,调用了repaint()方法;而repaint()方法被调用时,要清除整个背景,然后才调用paint()方法显示画面。在清除背景和绘制图像的短暂时间间隔内被用户看见的就是闪烁。另一个是由于paint()方法要进行复杂的计算,绘制每一帧花费的时间太长,图像中的各个像素值不能同时得到,使得动画的生成频率低于显示器的刷新频率,从而造成闪烁。可利用重载和双缓存技术解决这个问题。重载:当AWT接收到一个Applet的重绘请求时,它就调用update()方法清除Applet的背景,然后调用paint()方法。重载update()方法就可以将以前在paint()方法中的绘图代码包含在update()方法中,从而避免每次重绘时将整个区域清除。既然背景不再自动清除,Java程序员需要自己在update()中完成。双缓冲技术:主要原理是创建一幅后台图像,将每一帧画入图像,然后调用drawImage()方法将整个后台图像一次画到屏幕上去。这种方法的优点在于大部分绘制是离屏的。将离屏图像一次绘至屏幕上,比直接在屏幕上绘制要有效得多。在创建后台图像前,首先要通过调用createImage()方法生成合适的后台缓冲区,然后获得在缓冲区做图的环境(即Graphics类对象)。双缓存技术的缺点是当图像过大时,会占用内存很大的空间而影响程序的运行。实现较高的帧速度会产生平滑的动画,从而消除闪烁,因此,可在动画显示的每两帧之间,调用线程的sleep()方法休眠一个固定的时间。这样做的缺点是使用绝对的延迟时间会使延迟过长,即造成等待时间过长。

当需要动画速率不因硬件环境而发生改变时,为了保持恒定的帧速度(也就是恒定的显示频率),在线程的run()方法中可加入如下代码:

另一种方法是创建一个线程,用于提供一个严格的时间信号,控制动画定时刷新。

因为图像是逐帧载入屏幕的,所以当动画线程刚开始时,出现图像残缺等现象,这时可以使用MediaTracker或ImageOberver类对象进行图像跟踪,待图像全部载入后,再调用drawImage()方法将图像输出到屏幕上去。

而在不同硬件环境下,需要设计不同的动画优化方案。如在手机动画游戏等缓存过小的条件下设计程序,如采用双缓存技术显示动画,图像过大时会因占用过多内存,而使程序运行不稳定,这时就需要合理地设计和使用缓存。线程运行结束时应及时释放缓存,代码如下:

在Java程序运行中,采用的是自动回收内存的GC机制,而当内存泄露时,GC无法释放内存,即当程序中的对象申请了内存空间没有释放,而这些对象却是无用的,即程序以后不会再使用这些对象时,这些对象就可以判定为Java中的内存泄漏,这些对象不会自动被GC所回收,然而它却占用内存。可运行GC的函数System.gc()访问GC,根据Java语言规范定义,该函数虽然不保证GC一定会执行内存回收,但可在一定程度上调用GC防止内存泄露,所以,可在调用双缓存技术程序末尾加上语句System.gc()。不同的JVM实现者可能使用不同的算法管理GC。通常,GC的线程的优先级别较低,那么需要调整GC的参数,让GC工作的速率与需要释放缓存的速率一致,Sun提供的HotSpot JVM就支持这一特性。

具体的动画编程,应根据具体软硬件环境结合程序要求,选择适合的优化方案。

摘要:Java动画编程在游戏软件开发、程序设计中应用广泛。针对不同环境下的Java动画编程的常用技术进行了分析,介绍了根据不同编程环境,消除动画闪烁及优化显示效果的技巧。

关键词:Java动画编程,缓存技术,游戏动画优化,GC

参考文献

[1]刘岩松.基于Java的动画速率精确控制.辽宁师专学报,2005,10.

浅析Java语言程序设计 篇9

Java是由Sun Microsystems公司于1995年5月推出的一种程序设计语言, 主要应用于互联网、个人PC、数据中心、游戏控制台、科学超级计算机。它刚开始的名字叫“Oak”, Java最初是为电视、控制烤面包机等家用电器的交互操作而设计的, 但当时并没有得到成功的推广、随着互联网的发展, Java经过数次的设计和改进后演变成当前受到极大欢迎的Java。

基于Java前身设计的特点, 其具备了可移植性和平台无关性, 成为了可以运行于不同的环境、不同的CPU上的程序语言。当前Java在全球得到了大量的推广和应用, 在计算机应用中发挥着强大的作用。

2 Java的特征

人们在传递信息时常利用自身的器官进行表达, 如声音、情绪、动作、姿态等。但这些声、图、像是转瞬即逝的, 在当前计算机发达的社会, 为保留这些信息并把信息进行传递, 程序语言便应运而生。

程序设计语言是表达软件的工具, 是面向机器的人工语言。Java作为一种高级的程序语言, 在实际应用中拥有面向对象, 简单性, 可移植性, 分布性, 动态性, 健壮性, 体系结构中立性, 安全性等多种优点。

2.1 简单性 (Simple)

Java语言是对C++语言的升华, 有不同与C++语言, 它在C++语言的基础上进行了很大的改进, 在保留了C++语言精华部分的同时也摒弃了C++语言中不常用、不易于理解、繁杂的部分。因为Java是在C++语言的基础上发展的所以懂得C++语言的人如果学校Java就会变的很简单, 同时, 学习Java语言也不需要拥有C++语言基础。

2.2 面向对象 (Object-oriented)

Java语言虽然是杂合语言, 但它是纯面向对象的编程语言。出了基本的数据类型外, 为了使程序语言更容易理解, Java程序语言的编写思想是纯粹面向对象的。

2.3 体系结构中立 (Architecture-neutral)

Java源程序经编译后的字码节与计算机体系结构及平台无关, 可在多种系统上运行。

2.4 可移植性 (Portable)

体系结构的中立性使Java程序可以在不同的平台上运行, 但Java语言的文本是统一的, 在面对不同的机器结构时, 整数32位、长整数64位保持不变。Java系统提供的类库是可以访问任意不同的平台的, Java语言的可移植性实现了软件的“一次开发, 处处运行”。

3 Java运行原理

程序语言是需要经过编译或者解释后才能被电脑执行的, Java程序语言需要经过编译和解释两个过程后才能够被电脑执行, Java源程序准备好, 第一步需要将其翻译成源代码;第二步由虚拟机将源代码转换成电脑能够识别的程序。

Java虚拟机 (Java Virtual Machine) 是想象中的机器, 它的实现需要通过在现实中的计算机上进行软件模拟, Java虚拟机有自己想象中的硬件, 如处理器、堆栈、寄存器等, 还具有相应的指令系统。虚拟机是机器与编译程序之间的连接者, 它具有抽象性, 在编译程序翻译成虚拟机能够识别的源代码之后, 解释器就能够将源代码转换成电脑能够执行的程序。由于编译程序与虚拟机拥有共同的接口, 所以编译程序主要的面向对象即是虚拟机, 只需要生成虚拟机能够理解的程序。在Java中称能够被虚拟机理解的代码为字节码, 虽然各个平台的解释器各不相同, 但是虚拟机都是相同的。Java源程序经过编译器编译后变成虚拟机能够理解的字节码, 虚拟机对字节码进行解释, 虚拟机将字节码发送给解释器, 解释器将其翻译成特定机器能够理解的机器码, 然后进行运行。

Java虚拟机由指令集、寄存器、栈、无用单元收集堆和方法区域五个部分组成, 它是Java语言的基础, Java语言相对于其他的程序语言而言比较容易学习, 使用的概念不多, 较简单。而且Java自身具有自动内存垃圾收集功能, 在运用Java时不需要对内存进行释放。

4 Java编译案例

4.1 Java开发工具

Java可采用的开发工具有多种, Sun公司开发的Java开发工具包JDK (Java Development Kit) 在Java开发中较为常用。

4.2 Java编译

在编写Java程序时, 首先需要按照Java语言的语法规则编写相应的源文件代码利用编译程序将Java源程序编译成可执行的程序, 生成由虚拟的机器代码组成的类文件。下面简要分析简单的Java程序。

使用编辑程序时, 输入上例中的源代码, 并以普通文本格式保存, 且保存时文件名必须为Hello Lucy.java。

然后用编译程序javac.exe编译上述源程序文件, 在Windows系统中输入javacHello Lucy.java

经编译后生成类文件Hello Lucy.class

然后使用解释程序java.exe进行解释运行, 命令为:java Hello Lucy

解释运行后, 屏幕将输出:

Hello, Lucy!

5 结语

Java的诞生是对传统传统计算机模式的挑战, 对计算机软件产业都产生了深远的影响, 随着信息时代的发展, Java在未来的时间里将会有更广阔的应用前景。

摘要:Java是随着软件开发技术的演变而出现的, 它是一种功能强大的新型的面向对象的程序设计语言, 可以解决很多传统上的程序设计难题。本文主要从java语言的历史、特点、编译等方面对Java程序设计进行了简要阐述。

关键词:Java语言,软件开发,程序设计,信息

参考文献

[1]冀振燕, 程虎.Java编译程序技术与Java性能[J].软件学报, 2000 (2) .

[2]闫伟, 谷建华.Java虚拟机即时编译器的一种实现原理[J].微处理机, 2007 (5) .

java编程平台的优势解析 篇10

关键词:java,编程,平台,优势

1 引言

计算机语言, 是计算机编程技术中最为核心的组成部分。不同的编程语言对应着不同的编程环境, 例如C语言就是有着C语言自己的编程环境。对于计算机语言的发展历程而言, 其最早的为汇编语言, 也是最为简单和基础的计算机语言。随着计算机语言的不断发展, 出现了功能与兼容性更强的C语言。C语言虽然功能强大, 但是却存在一定的缺陷。其语言的可读性和概括性不强。实现一个功能, 则需要非常繁杂的C语言代码。因此, 后来又出现了面向对象的程序设计语言, 就是C++。面向对象程序设计语言虽然能够解决C语言存在的弊端, 但是却无法实现跨平台的使用。因此, 在此基础上, 技术人员开发了java语言, java最大的优势就在于其能实现跨平台编程, 并能够囊括多个计算机语言的特点。本文将重点分析java语言的特点, 并分析其平台的优势。

2 Java语言简析

了解一个计算机语言平台的优势, 首先要对计算机语言进行彻底地了解。那么首先需要了解的就是java语言的概念及其发展的历史。

从其语言的类别上人事java, java是可以实现跨越平台的一种面向对象的程序设计语言, 开发之初, 存在java程序设计与java语言编译平台。其优势在于能够实现可跨越性以及很强的囊括性, 对于软件以及大型的游戏等的开发, 都有着非常良好的语言支持环境。其未来的发展前景广阔, 受到业内人士的普遍认可。

2.1 java编程语言的开发

为什么要开发java程序设计语言呢?纵观计算机语言的发展历史, 可以比较容易了解java程序设计语言出现的原因。计算机最初的应用是数学计算, 大规模的数学计算需要强大的数据计算机系统。具有强大计算能力的中央处理器, 也就是人们常说的CPU。而随着计算机的生活化普及化, 用户对于计算机的使用有着各种各样的需求。因此, 软件开始出现。最早的汇编语言, 就是计算机最为基础的语言。随后, 出现了最为经典的计算机语言——C语言。C语言可读性强, 并且覆盖面广泛, 具有强大的编译功能, 从而实现了计算机的软件革命。软件的发展越来越快, 开始逐渐超越了硬件的发展。随着人们要求的不断提高, C语言由于过于单一化, 无法适应于大规模的模块化编程。因此, 面向对象程序设计语言就应运而生。最早出现的就是C++面向对象程序设计语言, 其可以实现构造类, 并通过继承等方式, 进行大规模的编程。C++基本成为计算机的顶级高级语言, 承载着计算机的主要软件开发。但是, 在人们的生产和生活中, 操作系统开始不断推出。目前, 比较常用的有微软的windows操作系统, 苹果公司的ios操作系统, 还有就是用于软件开发的Linux操作系统。以往的计算机语言最大的弊端就在于, 计算机语言需要编译环境。也就是计算机语言要有编译平台, 才能实现软件的开发功能。但是, 计算机操作系统的多样化, 导致了C++这样的高级语言, 在不同操作系统下会出现bug, 从而影响软件开发。因此, 亟需一种能够可以跨越平台的一种计算机语言。所以, 在不断的开发过程中, java语言得以应用。Java不仅仅可以实现跨越平台, 更能够在一定程度上实现移植, 囊括了C语言以及C++等高级语言的特点。并且, java也具有面向对象的性质, 因此java可以用于大型的编程。以上就是java语言开发的历程, 因为有需求, 所以才应运而生。

2.2 java语言的以及java编译平台的主要优势分析

Java的语言的优势比较突出, 并且能够实现多种软件的开发和设计。从我们日常生活中, 就可以得以体现。例如, 大规模的游戏平台, 满足了人们对于游戏的渴望。其中多数游戏平台就是通过java编程实现的, 网页设计中也都需要使用java语言编译平台。其中使用java的主要原因在于, 第一是java的可移植性好。游戏一般都需要具有可移植性, 因此通过java进行编译, 对于游戏的效果体现更好一些。第二, 人们不断的追求方便快捷。游戏的平台也从计算机开始向手机发展, 从而让人们在使用手机的时候也能畅游游戏的乐趣。因此, java游戏是最先被人们熟知的。Java语言的可移植性, 从计算机到手机的转变, 就是对于java语言优势的最好诠释。

对于java的编译平台, 其优势的体现主要是在多元化方面。例如, 在进行软件开发的时候, 人们习惯了使用linu操作系统, Linux操作系统被称为是软件开发的基础平台。但是, 由于大多数人们比较习惯使用windows操作系统, 因此就会造成人们更习惯使用windows平台进行软件的开发与测试, 从而查找bug。如果采用C++等面向对象的程序语言, 虽然可以实现大规模编程以及软件开发等。但是, 从平台的移植上分析, C++的局限性太大。只能够活跃在windows操作系统中, 而脱离了操作系统, 其编辑环境就无法存在。对于java而言, 通过使用任何的操作系统进行编译, 都可以实现。并且, 在一定程度上java实现了编译的简易化。同样的软件效果, java需要进行编译的内容就非常简单, 而且容易理解。因此, 从其平台的优势角度分析, 可移植性占据了最大的优势, 并能够实现多平台的编译与测试。

java语言的以及java编译平台的主要优势, 集中体现在其能够囊括高级语言的优点, 并且能够克服其缺点, 从而达到高效编译的目的。

3 结语

Java作为计算机语言的一种, 能够建立在C语言以及C++的基础上发展起来, 足以证明java有着其语言的优势以及编译平台的优势。对于C语言以及C++而来, 两者虽然都是高级语言, 但是却都无法实现跨越平台。因为微软的windows系统应用过于广泛, 因此C语言以及C++的编译环境都是建立在windows操作系统下的。而大多数的软件开发平台都是Linux, 因此就造成了编译上的缺陷。此外, C语言和C++虽然都是高级语言, 但是其编译方法并不是最佳的。也就是其资源的利用上, 并不十分有效。而java语言能实现可移植的条件下, 囊括高级语言中面向对象的特点, 从而最大限度实现计算机语言的利用最大化。因此, java语言以及其编译平台最大的优势在于不仅仅能够实现高级语言的特性, 并且具有面向对象的特性, 从而可以实现大规模编程。最为重要的是, java可以跨越平台, 实现多平台编程。

参考文献

[1]张健康, 杨宜康, 李雪, 刘磊, 基于Java 3D的地球空间环境可视化研究[J], 计算机应用研究, 2013 (01) :211-214

[2]蓝雯飞, 李子茂, “Java程序设计”课程教学思考[J], 计算机时代, 2013 (01) :37-39

[3]田夏利, 李雄飞, Java框架对初级开发者的束缚及化解策略[J], 软件导刊, 2013 (01) :57-59

JAVA语言编程 篇11

关键词:Java语言;安卓手机;软件开发

中图分类号:TP311.52

1 安卓软件应用程序

总体来说,一般比较简单的安卓应用程序主要由Activity、Content Provider、Service、Intent等部分组成,其中Activity相对于其他的应用程序对话框或者其他的网络应用程序的页面窗口来说,安卓手机提供多个使用的数据存储,同时他也被设计成为独立的可以保持自己在后台运行的服务,Intent是在运行的时候自动保存的机制,用来具体的描述一个程序想要作一件什么事情、从一个活动跳到另外一个活动,对于Intent来说,各个活动之间的切换是很方便的。

2 安卓手机软件的架构

2.1 应用程序

安卓手机软件会跟同一系列的核心的应用程序一起发布,该应用的程序还包括一些客户端,短消息的程序,日历、地图、浏览器等等的管理程序,所有的应用的程序都是利用Java语言来进行编写的。Java最大的特性就是提高了交互的可能性。

2.2 应用程序的框架

开发的人员可以完全的访问核心的应用的程序所使用的主要的框架,该程序的框架的设计简化了的一些重组的组件的使用的频率,在任何的时候一个应用程序可以同时的发布出它的功能并且在任何的时候都能够将其他的应用程序使用其主要的发布的功能性质的模块,不过得主要遵循框架的安全性的主要的限制。同时,还要将这些使用的机制也可以使用户也可以方便的替换主要的应用程序。

2.3 程序库

安卓手机包括C语言的程序,这些程序能够将安卓系统中的不同的组件的使用,他们还能够通过安卓的应用程序的框架为其主要的开发者提供服务。这个程序库里面的主要的内容就是Java语言的应用。

2.4 运行库

安卓系统的主要的运行库包括了一个核心的库,这个核心的库提供了Java的一些编程的语言的核心的大多数的主要的功能。安卓的手机软件的核心的服务的系统主要依赖Java的编程的语言,比如说安全性、内存的管理、进程上的管理等等的性质,主要的网络上的协议和驱动的模块,他都占有一个很大的比重。Java同时也作为硬件和软件之间的抽象的核心层面来存在。

3 Java语言的特点

3.1 面向对象

面向对象其实是现实世界模型的自然延伸。现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。另外,现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。如果说传统的过程式编程语言是以过程为中心以算法为驱动的话,面向对象的编程语言则是以对象为中心以消息为驱动。用公式表示,过程式编程语言为:程序=算法+数据;面向对象编程语言为:程序=对象+消息。

所有面向对象编程语言都支持三个概念:封装、多态性和继承,Java也不例外。现实世界中的对象均有属性和行为,映射到计算机程序上,属性则表示对象的数据,行为表示对象的方法(其作用是处理数据或同外界交互)。所谓封装,就是用一个自主式框架把对象的数据和方法联在一起形成一个整体。可以说,对象是支持封装的手段,是封装的基本单位。Java语言的封装性较强,因为Java无全程变量,无主函数,在Java中绝大部分成员是对象,只有简单的数字类型、字符类型和布尔类型除外。而对于这些类型,Java也提供了相应的对象类型以便与其他对象交互操作。

3.2 可靠性和安全性

Java最初设计目的是应用于电子类消费产品,因此要求较高的可靠性。Java虽然源于C++,但它消除了许多C++不可靠因素,可以防止许多编程错误。首先,Java是强类型的语言,要求显式的方法声明,这保证了编译器可以发现方法调用错误,保证程序更加可靠;其次,Java不支持指针,这杜绝了内存的非法访问;第三,Java的自动单元收集防止了内存丢失等动态内存分配导致的问题;第四,Java解释器运行时实施检查,可以发现数组和字符串访问的越界,最后,Java提供了异常处理机制,程序员可以把一组错误代码放在一个地方,这样可以简化错误处理任务便于恢复。

由于Java主要用于网络应用程序开发,因此对安全性有较高的要求。如果没有安全保证,用户从网络下载程序执行就非常危险。Java通过自己的安全机制防止了病毒程序的产生和下载程序对本地系统的威胁破坏。当Java字节码进入解释器时,首先必须经过字节码校验器的检查,然后,Java解释器将决定程序中类的内存布局,随后,类装载器负责把来自网络的类装载到单独的内存区域,避免应用程序之间相互干扰破坏。最后,客户端用户还可以限制从网络上装载的类只能访问某些文件系统。

上述几种机制结合起来,使得Java成为安全的编程语言。

4 安卓手机软件系统的开发优势

企业为什么要开发安卓手机软件,不仅仅是因为他有强大的谷歌作为后盾,并且还开放了软件开发的组件,可以将第三方的开源的主要的社区方便快捷的开发众多的实用性的安卓手机应用程序,而且他还与手机产业链中最具有影响力的龙头性的公司进行联合,建立非常标准的、开放化的通信的软件的平台,也就是说只要是采用安卓操作系统的主要的平台,就是基本上不受硬件的限制,程序的主要的可移植性能比较好,能够很好的解决当前的由于众多的手机操作系统的不同而造成的不同的智能手机之间的格式不一样从而造成不同的手机之间不能进行信息交流的问题。

安卓手机在中国的应用前景十分的广泛,首先是具有成熟的消费者,在国内,安卓系统非常的好用,这些软件的普及为了安卓系统的普及提供了主要的前提,国内的一些主要的运营商也加入了这个大家庭,比如说中国移动、中国联通、中兴通讯、华为通讯等等的一些比较大型的企业,同时也不仅仅是手机,我们国家也推出了安卓手机软件的其他的一些产品,我们可以预见安卓系统被广泛的应用,同时也将进一步扩大安卓系统的应用的主要的,同时根据目前的资料进行分析,全国到目前为止已经有23亿部的移动的设备使用安卓软件,其中手机占有百分之六十。

安卓系统在中国掀起的浪潮让越来越多的企业认识到移动设备对于中国产业的影响,企业安卓客户端的开发也受到了企业的一些关注,目前来说我们国家手机软件开发正处于高速增长的阶段经过一路的研究和探索和经验的总结,涌现了一大批的致力于开发的互联网的在线的传播的解决的方案的主要的运营商,主要是将手机应用软件的开发和推广,移动互联应用开发以及涉及安卓的手机平台,智能手机的应用开发的服务已经涵盖了很多的地方。安卓手机软件能够实现互交形式的完成,并且以此来为企业提供互联网的应用的解决的方案。

5 结束语

随着社会的发展,科技的创新脚步也越来越快,手机也慢慢的进入我们的视野之中,成为了我们生活中的必不可少的一些物品,随着Java语言在手机领域中的开发,手机上的软件大部分都是在他的基础上进行开发的,在其应用开发中应用也十分广泛,也依然占有着不可或缺的地位。

参考文献:

[1]埃始儿,陈灏鹏.Java的编程思想[M].北京:机械工业出版社,2009(08).

[2]霍斯特曼,柯内尔.安卓手机软件的开发[M].北京:电子工业出版社,2011(05).

[3]罗伯茨,基于Java语言的安卓手机软件的开发[M].北京:清华大学出版社,2010(03).

[4]盖索林,王世江.安卓操作指南[M].北京:人民邮电出版社,2011(03).

试析Java语言异常处理技术 篇12

1 Java语言异常化处理的优势

Java语言对于程序中的异常问题的处理,往往首先在于对异常进行分类,借助不同结构和层次分类后能够对单项异常进行准确处理。异常处理实现了程序代码中出现错误段与正常段的分离,对于程序的可读执行性增强。错误在发掘后,会被传递到执行事件管理的调用堆栈中。异常处理技术能够主动捕获未发觉的错误并进行处理。这些技术优势确保异常处理的准确性大大提升。

Java语言的异常处理一般借助5个关键字“try、catch、throw、throws、finally”完成。基本思想为:先用try语句对存在疑问的局域进行监管,当try语句内有异常,则会及时被抛出,程序代码随着catch语句块的执行得以实现异常捕获并处理;通过throws语句方法声明并执行抛出,后在内部完成throw抛出异常;finally语句一般在return实现执行前处理,一般结构如下:

2 Java语言的异常分类

Java语言一般会根据特殊性的层次结构来进行对象化分类。首先看Java语言的类层次结构,异常类语言基本出自Throwable的子类,而可以按照逻辑错误Error类和Exception类来扩展Throwable子类分支。

在两类分支中,Error及其子类体系基本围绕程序运行错误及系统资源消耗殆尽等异常进行展示,语言编译单元不会直接检查整个Error及其子类体系。而Exception类又可以直接扩展为3类分支:运行时异常(Runtime Exception)、输入输出流异常(IO Exception)和用户自定义异常类,最后一类分支可以用图式**Exception表示。运行时异常(Runtime Exception)属于程序编写运行的错误,语言编译单元不会直接检查,因此与逻辑错误Error类一同可以称之为未被检测的异常。当出现未检测异常后,大多数依靠程序员的个人能力挖掘错误并及时修改。而输入输出流异常(IO Exception)和**Exception用户自定义异常类,则属于已经接受检查的异常。当程序员要对这些异常展开处理时,需使用“try-catch”来完成语句的捕获,当然也可以使用“throws”语句产生申明行为,完成异常部分的抛出,以便完成最后的编译工作。

通过上述的结构层次划分,可讲Java语言的异常分为用户自定义类或系统定义两种。用户自定义的异常一般就是由程序编译人员对程序的内在逻辑进行解读,根据需要创建特有异常对象,这些异常都与程序中的异常错误积极对应。在对自定义异常进行创建或抛出阶段,第一步应该使用Exception的子类创建方式定义异常类,并有效延续Exception类逻辑得以实现。Java语言是面向对象的语言,因此用户自定义的异常类与Exception类都有相同的面向对象相接的端口,也在这些端口中能够解析中定量的代码。通常,自定义用户异常的格式如下表示:

如下列代码段:

而由系统定义的异常类别,则可以包含在系统运行或程序数据处理过程中可自行预见的异常错误。系统条件中的类的定义同时也囊括了程序运行的错误信息,并附有合理的解决处理方案。如表1所示,可以将相应的系统自定义异常标识与异常缘由一一对应。

当然,无论是系统定义异常类还是用户自定义异常类,都不能单独成为描述系统全部异常状况的概括,同时也就无法准确地返回到用户需要了解和获知的详细信息。

3 Java语言的异常处理应坚持的原则

3.1定义异常位置的层次感

Java语言出现异常情况后需要处理,应先定义异常类,按照不同的类别将异常的实际反应与不同的目标对象进行对照例化。可以将定义Java语言的异常类当作是构建一棵大树的主要躯干部分,同时大树的每个部位可以对应在程序中出现的异常,这些树干部位都已经提前做好定义。当没有找到树干的定义异常部位后,就需要按照增添方面完成对新的异常树干位置的补充。异常分类的不同定义,因此具有了层次化的位置处理,在后期的程序代码维护中便于处理,同时其一一对应的关系能够帮助用户更快地通过异常找到导致的原因。

3.2声明异常的精准化原则

在对异常进行声明时坚持精准化原则,能够更快对应找准异常产生的缘由。例如,当输入输出流异常IO Exception类的体系运行时,往往在定义My Read方法中,需要声明其属于输入输出流异常IO Exception类,而不会因为IO Exception类属于Exception类的子类分支,将声明改为Exception类,具体的语句格式可见:

通过精准的声明定位,能够将语句后部分的抛出位置指定的更加具体。

3.3异常try语句块的简易原则

Java语言的异常处理中,常需要将各种异常可能性置于较大容量的try语句块中,这样整合的做法就是非常有利于程序的编写。不过也会导致很多的不利结果:try语句块容量加大后,相应的异常数也会增多,在海量数据中挖掘报错的原因无疑增加了难度。同时,大容量的运行容易导致系统在解读和运行程序时内存或CPU处理超负荷损毁的风险加剧,无疑为程序编码的运行效率产生不小的制约。

3.4避免异常遮掩

容纳语言异常的try语句块在接受处理并抛出后,如果同时伴随catch或finally语句块中出现已检查异常抛出,就有会部分异常因间隙的存在被遮掩。处于被遮掩状态的异常将无法及时传播,而最后阶段的外围异常则会传递到调用堆栈。这样的情况下,程序很可能在运行中因异常的遮掩累积而出错停止。而且,想要重新寻找异常的导致原因,还需要让异常不受遮掩,也就是避免在try语句块抛出后立即伴随catch或finally语句块抛出。

3.5异常段自动隔离

很多Java程序语言都存在可循环的执行语句。当执行语句在运行中持续循环后,一旦产生异常,那异常就会在这样的循环结构中反复执行,从而直接影响到其他程序语言,出现更多的异常。异常处理技术中常会采用中断跳转模式,即程序运行中出现异常会中断运行,并跳转到其他位置。如果在循环中大量出现异常段,只会让程序的运行频繁跳转,不仅增加运行消耗,使得程序的执行速度降低,而且特别容易出错,还无法有效查询到错误发生的原因,一般上如果不把异常段与循环结构体主动隔离,则主程序的报错很难实现有效恢复。

3.6异常事件的资源清理

在Java语言中,异常事件产生后会产生包括操作痕迹的资源,常用finally块来完成清理。finally块的使用应在开始资源释放前就得到更为准确的应用,要采用一对一的形式。若因两个以上资源同时定义一个finally块,则可能存在其他资源出现申请错误或释放错误,这样就不太利于第一资源的积极释放。异常事件处理中,必然要注意finally块与资源申请语句的对应呈现,才能让资源得到有效利用。

4常见两种异常处理方式

Java对于异常出现后的处理,往往将可识别的错误包装成对应的类对象,统一集中在对象程序段中实现处理。对于异常代码一般有两种处理办法:

4.1 try...catch语句

try...catch语句方法的使用,便于捕获并及时处理异常事件。catch语句可实现多个排列,以便保障不同异常的对应,例如:

4.2 throws语句

在Java语句中存在很多异常有时较为难处理,可以借助方法声明,由throws语句完成异常事件的抛出。例如:

当然,并不是所有的方法都只要简单抛出就行。若某方法可以简单抛出异常事件,则在用于方法调用的多层次嵌套结构中采用调用,Java虚拟机就能够主动在有异常状况出现的代码块中重复地读取扫描往返寻找,一直待异常代码块完成最终处理为止。异常快被找出后将由catch语句执行处理。

当然,如Java程序存在的系统要采用方法调用直接追溯到堆栈最底层后,调用main()方法寻找异常时,若尚且未找到异常处理码,就需要按照下列步骤完成处理:

(1)调用print Stack Trace()方法。这一方法可以将调用栈的出现异常的信息数据直接打印。

(2)若异常线程认定为主线程,程序运行就会直接受影响被终止;但如果认定为非主线程的异常,则单线程的终止不会影响其他线程的运行。

5结语

Java语言异常处理技术可以正确识别出错与正常的代码,并分离式处理,具有一定的优越性。在异常处理同时,要注意随着程序运算量的增加可能导致计算机的运行变慢。因此,对于广大编程人员而言,采用什么方法来完成异常处理应该需要慎重对待,要在异常处理工作中保持科学合理性。

参考文献

[1]夏宇.基于Java常见异常处理研究[J].计算机光盘软件与应用,2012,(8):182-183.

[2]夏先波.Java JDK实例宝典[M].北京:电子工业出版社,2008.

上一篇:幼儿行为习惯养成下一篇:远程市场化