其实temp在java中是什么意思的问题并不复杂,但是又很多的朋友都不太了解Java里面char定义了这个char temp = 'aaa',为什么不对,到底'\\u0000'和'\\uffff'代表具体什么意思啊,因此呢,今天小编就来为大家分享temp在java中是什么意思的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
一、Java里面char定义了这个char temp = 'aaa',为什么不对,到底'\\u0000'和'\\uffff'代表具体什么意思啊
char是字符型,String是字符串型。字面意思就很明白了char只能单引号一个字面或者数字而String用双引号可以是一串的字符组合。。。。。仅字面就可以理解了。。。。下面百度来的书面就如下:char只是一个基本类型,而String是一个类,可以直接引用。比如charc='c';不能直接对c调用方法。Strings="abc";这时可以调用s.charAt(0);等方法,因为String是类,这是就是对象的调用了\u开头的是一个Unicode码的字符,每一个'\u0000'都代表了一个空格.其他的楼主可以查看Unicode表.通常中文在的显示都是被转化为Unicode显示的.Unicode可同时包含65536个字符,ASCII/ANSI只包含255个字符,实际上是Unicode的一个子集。Unicode字符通常用十六进制编码方案表示,范围在'\u0000'到'\uFFFF'之间。\u0000到\u00FF表示ASCII/ANSI字符。\u表示这是一个Unicode值.更正,\u0000代表的应该是NULL,输出控制台是一个空格...
二、如何在Java程序出现异常时输出其文件和行号
使用了如下方法获得异常所在的文件,行号和方法:
StackTraceElementstackTraceElement=ex.getStackTrace()[0];//得到异常棧的首个元素
System.out.println("File="+stackTraceElement.getFileName());//打印文件名
System.out.println("Line="+stackTraceElement.getLineNumber());//打印出错行号
System.out.println("Method="+stackTraceElement.getMethodName());//打印出错方法
程序如下:
publicclassExceptionTest{
publicstaticvoidmain(String[]arg){
try{
thrownewException("ExceptionTest!");
}
catch(Exceptionex){
ex.printStackTrace();
StringstrTemp=ex.getStackTrace().toString();
StackTraceElementstackTraceElement=ex.getStackTrace()[0];
System.out.println("File="+stackTraceElement.getFileName());
System.out.println("Line="+stackTraceElement.getLineNumber());
System.out.println("Method="+stackTraceElement.getMethodName());
}
}
}
输出如下(在Eclipse3.1中):
java.lang.Exception:ExceptionTest!
atExceptionTest.main(ExceptionTest.java:5)
File=ExceptionTest.java
Line=5
Method=main
大家可以看到,输出基本可以满足需求,但是没有ex.printStackTrace();产生的链接效果,如点击ExceptionTest.java:5就可以到达错误处,这里不知道如何处理,那位知道请告知.
然而,上述方法不能应付类反射出现的异常,请大家看如下程序:
publicvoidfetchCommand(StringstrCmmd){
cmmdArgs=strCmmd.split("/s+");
StringclassName="Command"+cmmdArgs[0];
try{
Classcls=Class.forName(className);
cmmd=(Command)cls.newInstance();
}
catch(Exceptionex){
ex.printStackTrace();
//System.out.println(ex.getStackTrace()[0].getLineNumber());///getFileName();
StackTraceElementstackTraceElement=ex.getStackTrace()[0];
System.out.println("File="+stackTraceElement.getFileName());
System.out.println("Line="+stackTraceElement.getLineNumber());
System.out.println("Method="+stackTraceElement.getMethodName());
}
}
当className不是可识别的类名时,输出如下:
commandType01start!
commandType01Length=3
commandType01End!
commandType02start!
commandType02is:Type021234
commandType02End!
File=null//这里找不到文件
Line=-1//行出错
Method=run//方法错
commandType02start!
commandType02is:Type04USARussiaChina
commandType02End!
java.lang.ClassNotFoundException:CommandType04
atjava.net.URLClassLoader.run(UnknownSource)
atjava.security.AccessController.doPrivileged(NativeMethod)
atjava.net.URLClassLoader.findClass(UnknownSource)
atjava.lang.ClassLoader.loadClass(UnknownSource)
atsun.misc.Launcher$AppClassLoader.loadClass(UnknownSource)
atjava.lang.ClassLoader.loadClass(UnknownSource)
atjava.lang.ClassLoader.loadClassInternal(UnknownSource)
atjava.lang.Class.forName0(NativeMethod)
atjava.lang.Class.forName(UnknownSource)
atMediation.fetchCommand(Mediation.java:16)//这里倒是对了
atInlet.main(Inlet.java:11)//这里也对
看来StackTraceElementstackTraceElement=ex.getStackTrace()[0];还要继续挖掘.
经跟踪发现,现在用这个办法可以完全搞定:
StackTraceElementstackTraceElement=ex.getStackTrace()[ex.getStackTrace().length-1];
System.out.println("File="+stackTraceElement.getFileName());
System.out.println("Line="+stackTraceElement.getLineNumber());
System.out.println("Method="+stackTraceElement.getMethodName());
这里的变化是将ex.getStackTrace()[0]修改成了ex.getStackTrace()[ex.getStackTrace().length-1],因为只有数组的最后一个元素才有我想要的信息,原先的ex.getStackTrace()[0]只是恰巧数组的最后一个元素就是首个元素而已.
关于temp在java中是什么意思,Java里面char定义了这个char temp = 'aaa',为什么不对,到底'\\u0000'和'\\uffff'代表具体什么意思啊的介绍到此结束,希望对大家有所帮助。