我在一个捕获例外程序中使用if(textAge.getText()==null)时捕捉不到例外,但是使用if(textAge.getText().length()==0)时却可以捕获到例外,各位大大帮忙解释下文本长度为零与文本为空的区别,由于程序代码较长,就不列出具体程序了。
解决方案 »
- java 中没有提供public构造函数的类要怎么才能继承
- JAVA类库中的类可以看到原码么?
- Call to 'super' must be the first statement in the constructor body..这句话是什么意思....
- 很菜的问题,麻烦大家解答。
- 请问这个数据该怎么处理才能保存到数组?
- 今年的巴德歌赫猜想,谁答出,谁有奖
- 求一个Round Robin的分配程序
- 我的机器上,编译Java文件的时候,怎么不会自动生成包啊!
- 怎么判断一个对象是不是空
- 如何清空session变量的值,或者删除一个session变量
- 请问:如果我想把.class文件和.java文件分开存放,在JCreator中应该怎么设置?谢谢!!
- 用什么类和函数可以得到jvm的版本呢?
Object o = textAge.getText();
o.length();//如果o==null,这句就报错
Object o = textAge.getText();
o.length();//如果o==null,这句就报错恩,我不是在找nullpointexception的,textAge已经定义过了, 现在是返回别的异常,小弟的意思是“文本长度为零与文本为空的区别”,想弄清出这两个概念的区别,我的想法是他们涵义一样,就是在实际应用中好象有差别哦!附上代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class nameException extends Exception{
public String getMessage(){
return "姓名长度不能为空,也不能超过10个";
}
}
class ageException extends Exception{
public String getMessage(){
return "年龄不能为空";
}
}
class ageNumException extends Exception{
public String getMessage(){
return "20岁以下和40岁以上免进";
}
}
public class GBLDemo extends JApplet{
GridBagLayout gbl;
GridBagConstraints gbc;
JPanel panel;
JLabel labelName,labelId,labelSex,labelAge,labelAdd,labelStat,labelGrade;
JTextField textName,textId,textAge,textAdd;
JComboBox comboxSex,comboxStat,comboxGrade;
JButton button1,button2;
public void init(){
gbl=new GridBagLayout();
gbc=new GridBagConstraints();
panel=new JPanel();
panel.setSize(500,500);
panel.setVisible(true);
panel.setLayout(gbl);
getContentPane().add(panel);
labelName=new JLabel("姓名");
labelId=new JLabel("编号");
labelSex=new JLabel("性别");
labelAge=new JLabel("年龄");
labelAdd=new JLabel("地址");
labelStat=new JLabel("籍贯");
labelGrade=new JLabel("年级");
textName=new JTextField(6);
textId=new JTextField(6);
textAge=new JTextField(3);
textAdd=new JTextField(30);
String strSex[]={"男","女"};
comboxSex=new JComboBox(strSex);
String strStat[]={"河南","山东","河北"};
comboxStat=new JComboBox(strStat);
String strGrade[]={"初一","初二","初三"};
comboxGrade=new JComboBox(strGrade);
button1=new JButton("Ok");
button2=new JButton("Cancel");
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=1;
gbc.gridy=5;
gbl.setConstraints(labelName,gbc);
panel.add(labelName);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=6;
gbc.gridy=5;
gbl.setConstraints(textName,gbc);
panel.add(textName);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=1;
gbc.gridy=9;
gbl.setConstraints(labelId,gbc);
panel.add(labelId);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=6;
gbc.gridy=9;
gbl.setConstraints(textId,gbc);
panel.add(textId);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=1;
gbc.gridy=13;
gbl.setConstraints(labelSex,gbc);
panel.add(labelSex);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=6;
gbc.gridy=13;
gbl.setConstraints(comboxSex,gbc);
panel.add(comboxSex);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=1;
gbc.gridy=17;
gbl.setConstraints(labelAge,gbc);
panel.add(labelAge);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=6;
gbc.gridy=17;
gbl.setConstraints(textAge,gbc);
panel.add(textAge);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=1;
gbc.gridy=25;
gbl.setConstraints(labelStat,gbc);
panel.add(labelStat);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=6;
gbc.gridy=25;
gbl.addLayoutComponent(comboxStat,gbc);
panel.add(comboxStat);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=1;
gbc.gridy=29;
gbl.setConstraints(labelGrade,gbc);
panel.add(labelGrade);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=6;
gbc.gridy=29;
gbl.setConstraints(comboxGrade,gbc);
panel.add(comboxGrade);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=1;
gbc.gridy=21;
gbl.setConstraints(labelAdd,gbc);
panel.add(labelAdd);
gbc.anchor=GridBagConstraints.NORTHWEST;
gbc.gridx=6;
gbc.gridy=21;
gbl.setConstraints(textAdd,gbc);
panel.add(textAdd);
gbc.anchor=GridBagConstraints.SOUTH;
gbc.gridx=80;
gbc.gridy=150;
gbl.setConstraints(button1,gbc);
panel.add(button1);
gbc.anchor=GridBagConstraints.SOUTH;
gbc.gridx=100;
gbc.gridy=150;
gbl.setConstraints(button2,gbc);
panel.add(button2);
buttonAction actionButton=new buttonAction();
button1.addActionListener(actionButton);
}
class buttonAction implements ActionListener{
public void actionPerformed(ActionEvent e){
getAppletContext().showStatus("");
Object obj=e.getSource();
if(obj==button1){
try{
String tname=textName.getText();
textName.setRequestFocusEnabled(true);
if(tname.length()==0||tname.length()>=10)
{
throw new nameException();
}
}
catch(nameException ex){ System.out.println(ex.getMessage());
}
try{
//if(textAge.getText().length()==0)
if(textAge.getText()==null)
{
throw new ageException();
}
}
catch(ageException exc)
{
System.out.println(exc.getMessage());
}
try{
int tage=Integer.parseInt(textAge.getText());
if ((tage<=20)||(tage>=40))
{
throw new ageNumException();
}
}
catch(ageNumException exc)
{
System.out.println(exc.getMessage());
}
}
}
}
}
以数组为例:
int[] i ={};//new int[0];
int[] j = null;
if(i==null){System.out.print("i=="+i);}
if(j==null){System.out.print("j=="+j);}
String s="";
String s=null;集合论中 fai 与{fai}的区别
textAge.getText表示一个空引用 没有被分配内存
textAge.getText().length()==0
textAge.getText表示引用了一个长度为0的字符串 其被分配了内存
非null才说明那个变量已经引用到一个String对象,而一个String对象,其字符串长度可能是0,也可能不是0。
String str = ""; //空串,str.length()=0List list = null; //空引用
List list = new LinkedList(); //空表,list.size()=0int[] a = null; //空引用
int[] a = new int[0]; //空数组,a.length=0
可以参见《.NET Framework SDK 文档》中的“参考\类库开发人员设计指南\数组使用指南”一节
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpgenref/html/cpconarrayusageguidelines.asp