关于JAVA编程过程中的疑问

2024-11-24 00:18:33
推荐回答(4个)
回答1:

对于文件流操作通常会有FileNotFoundException和IOException,这两个异常。
FileNotFoundException这个很简单就是文件不存在,无法读写文件。
IOException,这个通常是由于文件被另外一个程序正在操作,或者是写入的时候银盘空间不够了才会有。这个就类似于当你程序在运行的时候,去删除程序文件,window会报一个错出来。或者是复制文件提示硬盘空间不够。
对于第一种异常,通常是你在通过文件创建流的时候对文件是否存在加以判断就可以避免很多这种错误了。如果文件不存在就不创建流或者是创建文件再去创建流。
IOException异常则是要求你在操作玩流之后,不管是读入流还是写入流,做完就必须close,否则很显然如果你一直不关闭,其他人操作文件就可能有IOException异常,而在写入流的时候通常需要flush()吧缓冲数据都刷新,然后再close().这是一些操作流的正确做法。

this,是指当前的对象,所以当你在使用this.setBounds()这类方法和直接setBounds()是一样的,但是在某些时刻你的类有一个成员叫name,而你的参数也有一个name,那么this.name则表示当前对象的那个name成员。

匿名类,他的概念就是用一次就丢。如果你的类内部有内部类,或者是匿名内部类,jvm在编译的时候就会产生这样的东西,如果是内部类会带有内部类名,如果只是匿名类则会加上$+数字来表示匿名内部类。

getCanonicalPath这个方法抛出IOException异常,可能是不同平台下的文件名或者文件夹名的字符在另外的一种平台下是非法的字符,是不能作为文件名或者文件夹名的,如果是这样的文件就有这样的异常,这种通常是文件或者文件夹在跨平台使用的时候出现的。

SecurityException则是系统安全性问题,比如没有读写次文件权限的用户试图去读写这个文件。

class NewJFrame extends javax.swing.JFrame {

private String name;

public NewJFrame() {
initComponents();
this.jButton1.addActionListener(new ActionListener() {

String actionName = "1";

public void actionPerformed(ActionEvent e) {
System.out.println(this.actionName);
System.out.println(NewJFrame.this.name);
}
});
this.jButton1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
System.out.println("2");
}
});
}

public void setName(String name) {
this.name = name;
}

private void initComponents() {
jButton1 = new javax.swing.JButton();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.LINE_AXIS));
jButton1.setText("1");
getContentPane().add(jButton1);
jButton2.setText("2");
getContentPane().add(jButton2);
jButton3.setText("3");
getContentPane().add(jButton3);
pack();
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
new NewJFrame().setVisible(true);
}
});
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;

public String getName() {
return name;
}
}

这个代码里有三个匿名类,编译之后会有NewJFrame$1.class,NewJFrame$2.class ,NewJFrame$3.class如果你使用反编译软件你可以看到这三个类的内容。 这个类基本上吧匿名类,匿名内部类,匿名对象,等东西都包含在里面了,随便说一下匿名对象就是用一次就丢的对象。

楼主问的这种问题估计有些已经工作了一两年的都无法回答的,要是哪里不明白就baidu HI我。

回答2:

1.fr.close();//关闭流//没有这句会怎样???
可以不关闭,但是浪费系统资源,就好比你占着电话线不说话。
2.此异常是由于myData或text.txt不存在是抛出的吧?!
找不到text.txt这个文件引起的异常
3.什么情况下会抛出此异常IOException??
这是个运行时异常,输入输出异常,有可能在JAVA虚拟机运行时发生,程序员不可改变, 捕 捉了就可以。
4.还有关于this关键字的使用?什么情况下会用到this关键字,在接触到窗口应用程序时经常用到例如"this.Layout()""this.setBounds()"等,貌似不加没影响,那是不是可以不加?
this 表示的是当前对象,有些情况不加也可以,指向的是同样的地址,意思是调用当前对象的属性或者方法,在变量名不冲突的情况下可以省略,下面情况不能省略:
public class test{
int a;
int b;
public test(int a,int b){
this.a = a;
this.b = b;
}
}

5.setTitle("传统计算器*");//[color=#FFF8DC]此处在前面+"this."报错
匿名内部类实现时,你没加this时,如果你用的是JFrame调用的是从父类Frame继承过来的setTitle()方法,加了this后表式当前内部类(估计你用的是一个JButton)对象B17的setTitle(),它没有这个方法,当然报错
6.还有...就是为什么我在一个java文件里就写了一个类,可是生成了这么多??
你在写代码时自动编译产生的.
7.也是关于抛出异常的情况:
在File类使用是有个方法getCanonicallFile();此方法抛出异常的情况是????
IOException - 如果发生 I/O 错误(可能是因为构造规范路径名需要进行文件系统查询)
SecurityException - 如果无法访问所需的系统属性值,或者存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒绝对文件进行读访问
以上属于原创,很辛苦啊,希望对你有帮助

回答3:

看到没人回答 告诉你我的理解 你看满意不 我也在自学 可以多联系交流
1,fr.close(); 不写一般也没事,但是为了不造成资源的浪费,都是要写的,打开了不用就要关。免得占用资源,影响程序
FileNotFoundException,顾名思义,当然是找不到指定文件的时候报错了。
IOException呢,就是输入输出流在程序执行期间被一些因素中断时久要报错了。
2,this关键字,this.就是对该对象自身调用其属性或方法。有时用来区别成员变量与形参同名的情况:classA{int i;...public void f(int i) {this.i = i;}},如果你用eclipse多了就会发现this经常用,this.的好处就是eclipse会自动生成该对象可调用的方法供你选择,繁多的方法名你就不用记~\(≥▽≤)/~啦啦啦,有个模糊印象就ok了。
你那个匿名类又没有setTitle()方法,加this调用肯定报错。
3,凡是AAA$BBB*.calss命名的都是内部类,BBB类的定义在AAA的类体中。你写的computer类 中肯定定义了这么些个内部类。
4,这个方法抛的IOException,你可以认为系统在以此文件所在位置构建抽象路径的时候出错了,至于什么错,就管了,也管不着,没必要那么较真。

回答4:

蛋疼!