Integer和类实现问题和重写++问题

Integer和类实现问题和重写++问题

第一个问题:

public class countDemo {  
  
    static Integer count;  
      
    public static void main(String[] args) {  
      
        for(int i = 0;i<6;i++){  
            count++;  
        }  
        System.out.println(count);  
    }  
}  

这样为什么会报null指针异常呢,为什么不可以++呢 


第二个问题: 
 
public class User implements java.io.Serializable {  
    private Integer userId;  
    private String userName;  
    private String password;  
    private String mobile;  
    private String email;  
      
    @Override  
    public String toString() {  
        return "User [email=" + email + ", mobile=" + mobile + ", password="  
                + password + ", userId=" + userId + ", userName=" + userName  
                + "]";  
    }  
}  

为什么要在类上要实现implements java.io.Serializable 类? 
 
public class User implements java.io.Serializable {

为什么要这样重写类里面的属性? 


public String toString() {  
        return "User [email=" + email + ", mobile=" + mobile + ", password="  
                + password + ", userId=" + userId + ", userName=" + userName  
                + "]";  
    }  

北风网解答:


1、没有给count赋初值,Integer是int的封装类,默认值为null  
应该这样赋值:  
Integer count = 0;(这种写法在jdk1.5及以上的版本适用,原因是1.5以上的版本提供了自动拆箱机制;但如果你的jdk是1.4及以下,则应该改为:  
复制代码
Integer count = new Integer(0);)


2、一个类只有实现了Serializable接口,它的对象才是可序列化的。而实际上Serializable是一个空接口,没有具体的内容,它的目的只是简单的标识一个类的对象可以被序列化。  
 
3、重写toString()方法是期望得到自己想要格式的字符串,这个方法是定义在Object类中的,参考源码:  

public String toString() {  
    return getClass().getName() + "@" + Integer.toHexString(hashCode());  
    }  

转自:http://bbs.ibeifeng.com/read-htm-tid-65500.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用`JFrame`和`ActionListener`实现的Java代码: ```java import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class Main extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JTextField textField; private JLabel resultLabel; public Main() { super("计算器"); setLayout(new BorderLayout()); JPanel inputPanel = new JPanel(); inputPanel.add(new JLabel("请输入一个正整数n:")); textField = new JTextField(10); inputPanel.add(textField); JButton calculateButton = new JButton("计算"); calculateButton.addActionListener(this); inputPanel.add(calculateButton); add(inputPanel, BorderLayout.NORTH); JPanel resultPanel = new JPanel(); resultLabel = new JLabel(); resultPanel.add(resultLabel); JButton saveButton = new JButton("保存"); saveButton.addActionListener(this); resultPanel.add(saveButton); add(resultPanel, BorderLayout.CENTER); JButton closeButton = new JButton("关闭"); closeButton.addActionListener(this); add(closeButton, BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("计算")) { try { int n = Integer.parseInt(textField.getText()); int sum = 0; for (int i = 1; i <= n; i++) { sum += i; } resultLabel.setText("1到" + n + "的和为:" + sum); } catch (NumberFormatException ex) { resultLabel.setText("请输入一个正整数!"); } } else if (e.getActionCommand().equals("保存")) { if (resultLabel.getText().equals("")) { resultLabel.setText("请先计算!"); } else { try { String fileName = textField.getText() + ".txt"; PrintWriter printWriter = new PrintWriter(new FileWriter(fileName)); printWriter.println(resultLabel.getText()); printWriter.close(); resultLabel.setText(resultLabel.getText() + " 已保存到 " + fileName); } catch (IOException ex) { resultLabel.setText("保存失败!"); ex.printStackTrace(); } } } else if (e.getActionCommand().equals("关闭")) { dispose(); } } public static void main(String[] args) { new Main(); } } ``` 该程序创建了一个`JFrame`窗口,并分别在窗口的北、中、南面板中添加了输入、输出和关闭按钮。在输入面板中,使用`JTextField`实现了用户输入正整数的功能,并添加了一个计算按钮,点击该按钮会计算1到n的和并在输出面板中显示结果。在输出面板中,使用`JLabel`显示计算结果,并添加了一个保存按钮,点击该按钮会将计算结果保存到用户指定的文件中。在关闭按钮中,添加了关闭窗口的功能。 在`Main`实现了`ActionListener`接口,并重写了`actionPerformed()`方法来响应用户点击按钮的事件。根据不同的事件源,执行不同的操作。在计算事件中,使用`try-catch`块来捕获用户输入的非整数情况,并在输出面板中显示相应的错误信息。在保存事件中,首先判断计算结果是否为空,如果为空则提示用户先进行计算;否则,将计算结果保存到用户指定的文件中,并在输出面板中显示保存信息。在关闭事件中,使用`dispose()`方法关闭窗口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值