加this和不加this的区别
this是指的对象本身,通过this可以调用本对象拥有的所有方法和属性,当然不加this也可以调用。
一般用this的情况:
1.当局部变量与成员变量相同名时,例如 this,x = x;this.x 是个成员变量,而x是个局部变量
2.在myeclipse下用this可以提示后面的方法或者成员变量
3. 在内部类或匿名内部类中使用this来指向内部类本身
pingpuItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JInternalFrame[] allFrames = desktopPanel.getAllFrames();
int x = 0 ;
int y = 0 ;
for(JInternalFrame frame : allFrames){
frame.setLocation(x, y);
try {
frame.setSelected(true);
} catch (PropertyVetoException e1) {
e1.printStackTrace();
}
int frameH = frame.getPreferredSize().height ;
int panelH = frame.getContentPane().getHeight();
int fSpace = frameH - panelH ;
x += fSpace ;
y += fSpace ;
if(x + getWidth()/2 > desktopPanel.getWidth())
x = 0 ;
if(y + getHeight()/2 > desktopPanel.getHeight())
y = 0 ;
}
}
});
上面的getWidth()不加this指的是调用外部类ToolBar的函数,加this的话指的是匿名类ActionListener中的函数
4. 将类本省作为参数传递
private JMenu getChuang_kouMenu() {
if(chuang_kouMenu == null ){
chuang_kouMenu = new JMenu("窗口");
chuang_kouMenu.setMnemonic(KeyEvent.VK_W);
chuang_kouMenu.add(getPingpuItem());//打开项目时就建立了菜单项
chuang_kouMenu.addMenuListener(new MenuListener() {
@Override
public void menuSelected(MenuEvent e) {
//chuang_kouMenu.removeAll();
//System.out.println("加载item");
chuang_kouMenu.add(getPingpuItem());//动态加载菜单项
chuang_kouMenu.add(getClassAllItem());
chuang_kouMenu.add(getAllIconItem());
chuang_kouMenu.add(getAllResumeItem());
}
连接池资源关闭问题
在进行第三次添加的时候,发现软件卡住了,后来发现是连接池的问题,连接池每次连接都没有释放连接,达到最大连接数就出现了问题,因此一定要关闭资源!!
还有要注意关闭顺序,还有如果先关闭Connection,ResultSet的对象是不能使用的
if判断下如果不止一条语句一定要加括号!!
在往数据库中插入时出现
Duplicate entry ‘10’ for key ‘PRIMARY’ ,10是在id那一列,每次去id最大值然后加1插入新行,当插入第10行时,每次取之前最大id即max(id)都是9,是因为类型是varchar类型,改为int类型即可,注意
在取值的时候,如果还用rs.getString(1)会自动将int转化为String类型取出