用户操作
[即时聊天] [发私信] [加为好友]
幽客独往ID:casularm
633277次访问,排名61,好友0人,关注者0人。
casularm的文章
原创 361 篇
翻译 0 篇
转载 200 篇
评论 914 篇
幽客独往的公告
 点击这里给我发消息

科研成果

蛋白质翻译后修饰磷酸化位点预测

GPS 2.0

 

蛋白质翻译后修饰棕榈酰化位点预测

CSS-Palm 2.0

 

蛋白质功能结构域绘图软件

DOG 1.0

 

蛋白质翻译后修饰SUMO化位点预测

SUMOsp 2.0

最近评论
yuan:谢谢哦~~~我也刚买几天跟你一样的问题
casularm:要用Netbeans发布的API文档才行,从Plugins里面下载
wishwingliao:老兄,我那样做了,好像不行.
我把HTML格式的文档压为ZIP格式api.zip或者文件夹的也不行
casularm:是的
郜刚:请问这个东西是中科院划分的吗?
gaogang20002000@126.com
山西师范大学生命科学学院
文章分类
收藏
相册
笔记
Java
Algorithm
Cell Death
Cooking
DesignPatterns
Eclipse
Linux
Matlab
MySQL
Oracle
SoftEng
分子生物学
生物信息学
生物学名词
神经网络
细胞分子生物学
朋友
FTLIANG的专栏
Phonelear的专栏
张旭
迎迎的休憩所
存档
订阅我的博客
XML聚合  FeedSky

原创 Java 笔记收藏

新一篇: Eclipse 笔记 | 旧一篇: 中国的领土 —— 钓鱼岛

发表于 @ 2005年01月18日 20:50:00|评论(loading...)|编辑

新一篇: Eclipse 笔记 | 旧一篇: 中国的领土 —— 钓鱼岛

评论

#Casularm 发表于2005-01-20 00:33:00  IP: 211.162.6.*

break 只能够跳出内层循环,如果要跳出多重循环就需要使用标签。
outer:
for(;true;){
for(;ture;){
break outer;
}
}
System.out.println("finish!");
在执行 break outer; 语句之后直接执行输出语句。
#Casularm 发表于2005-01-25 14:45:00  IP: 218.104.71.*

将数字以百分号格式输出:

import java.text.*;
import java.util.*;

Locale loc = new Locale(" ");
NumberFormat currFmt = NumberFormat.getPercentInstance(loc);
double x = 0.123;
System.out.println(currFmt.format(x));

输出为:
12%
#Casularm 发表于2005-01-25 10:39:00  IP: 218.104.71.*

double 或 float 型的数据运算一定要以小数形式(其中至少要有一个),如果全以整数形式则会被削去小数部分的数值。
#Casularm 发表于2005-01-25 10:55:00  IP: 218.104.71.*

所有用 JUnit 生成的测试程序都以 TestXxx 形式命名。
由手工编写的测试程序都以 XxxTest 形式命名。
#Casularm 发表于2005-01-26 16:48:00  IP: 220.114.128.*


在 JBuilder 中使用 Log4j

首先将LOG4J_HOME/dist/lib/log4j-VERSION.jar 添加到项目的Required Libraries 中。

建立一个Log工厂文件
import java.net.URL;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class Log4jFactory {
public static Logger
logger = Logger.getLogger(lamost.sss.util.Log4jFactory.class.getName());

public static void ConfigLog() {
String resource = "/util/ConfigLog.properties";
URL configFileResource =
lamost.sss.util.Log4jFactory.class.getResource(resource);
PropertyConfigurator.configure(configFileResource);
}
}

再建一个ConfigLog.properties文件

#设置logger和level
log4j.rootCategory=DEBUG, R
#输出到文件
log4j.appender.R=org.apache.log4j.FileAppender
#输出的日志文件名
log4j.appender.R.File=Log.txt
#文件格式
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%m%n

使用时可以使用如下方式调用

import lamost.sss.util.Log4jFactory;

Log4jFactory.ConfigLog();
Log4jFactory.logger.debug("Hello, my name is Vincent Casularm.");

注意:如果使用 *.html 文件存储日志时,即使使用了%n也会连续显示,需要手动添加换行符<P></P>。
#Casularm 发表于2005-01-27 17:02:00  IP: 220.114.128.*

实例方法被覆盖,静态方法被隐藏。
被覆盖的方法只有覆盖它们的类才能访问它们;而访问被隐藏的方法的途径是提供该方法的全局名。

当一个字符串由多个字符串常量连接而成时,它同样在编译期就被解析为一个字符串常量。Java确保一个字符串常量只有一份拷贝。常量池(constant pool)中,Java会跟踪所有的字符串常量。
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。
在执行等式比较的时候,应该始终使用String.equals()方法,而不是==运算符。也可以借助intern()来实现,此方法返回常量池中的引用值。

返回类型void会将构造函数转变成方法。一个方法名与其类名相同是合法的,但是不要这么做。

当创建了一个覆盖了父类实例方法的子类时,访问那些被覆盖方法的唯一途径,就是使用super关键字。任何使用子类的外部类,永远不能调用父类的这些被覆盖的实例方法。
无法访问父类中被子类覆盖的方法的原则,仅仅适用于实例方法,也就是非静态方法。强制转换为静态父类的类型就能够访问被子类覆盖的方法了。
可以通过调用 getClass().getName() 方法来判断方法的真实身份。
#Casularm 发表于2005-01-27 17:08:00  IP: 220.114.128.*

重复使用一个 LinkList 变量,会使其长度累加。

即使每次使用后将其赋值为null也不行,本次的链表会接到前一个链表的后面,如果使用次数过多就会导致内存泄露。应该每次使用完后就调用 clearn() 方法,即可避免上述事情发生。
#Casularm 发表于2005-04-06 21:18:00  IP: 218.104.71.*

float 4字节 有效小数位数为6~7
double 8字节 有效小数位为15
#casularm 发表于2005-08-11 14:17:00  IP: 61.186.252.*

多态最根本的好处就是:如果你需要根据对象的不同型别而采取不同的行为,多态是你不必编写明显的条件式。
#casularm 发表于2006-02-01 18:24:00  IP: 211.162.6.*
序列化一个对象除了序列化对象自身外还要对它的所有父类进行序列化。
当一个对象实现了 Externalizable 接口后,它就不能访问默认的序列化方法了。必须手工的把所有非暂态和非静态的成员一一序列化。
#casularm 发表于2006-02-04 17:25:00  IP: 211.162.6.*
将遍历
Iterator fiberIt = fibers.iterator();
while (fiberIt.hasNext()) {
Fiber fiber = (Fiber) fiberIt.next();
Iterator slIt = skyLight.iterator();
while (slIt.hasNext()) {
SkyLight sl = (SkyLight) slIt.next();

}
}

写成了
Iterator fiberIt = fibers.iterator();
Iterator slIt = skyLight.iterator();
while (fiberIt.hasNext()) {
Fiber fiber = (Fiber) fiberIt.next();
while (slIt.hasNext()) {
SkyLight sl = (SkyLight) slIt.next();

}
}

无法正确执行
#casularm 发表于2006-02-05 15:29:00  IP: 211.162.6.*
Iterator是工作在一个独立的线程中,并且拥有一个mutex锁,就是说Iterator在工作的时候,是不允许被迭代的对象被改变的。Iterator被创建的时候,建立了一个内存索引表(单链表),这个索引表指向你原来的对象,当你原来的对象数量改变的时候,这个索引表的内容没有同步改变,所以当索引指针往下移动的时候,便找不到你要迭代的对象,于是就产生这个错误。ArrayList是动态的,可变对象数量的数据结构,但是Iterator则是单向不可变,只能顺序读取,不能逆序操作的数据结构,当你Iterator指向的原始数据发生变化时,Iterator自己就迷失了方向。
#casularm 发表于2006-02-21 23:24:00  IP: 220.114.139.*
对ArrayList进行随机访问,可以在常量时间完成,不论选择的元素为何,所需时间都相同。但对LinkedList而言,越靠近链表的尾端,花费的时间越久。
如果将元素安插至序列中央位置,对LinkedList来说,花费的代价明显少于ArrayList
#casularm 发表于2006-02-23 01:10:00  IP: 211.162.6.*
Java中可以在构造函数中直接调用其它构造函数,通过this实现。
但是不能同时调用两个或两个以上的构造函数,而且对另外一个构造函数的调用动作必须置于起始处,否则编译器报错。
在构造函数之外的任何函数内均不允许调用构造函数。
#casularm 发表于2006-03-02 15:33:00  IP: 218.104.71.*
Java语言规范把任何继承自Error或RuntimeException的异常都称作未检查异常。所有其他的异常称作已检查异常。
#casularm 发表于2006-03-03 13:48:00  IP: 218.104.71.*
一个方法必须声明它可能抛出的所有已检查异常。未检查异常或者超出了你的控制范围(Error),或者是因为你没有预防它(RuntimeException)。

如果你在子类里重载了超类的一个方法,那么该子类方法不可能比被取代的超类方法抛出更多的异常。
#casularm 发表于2006-03-03 14:37:00  IP: 218.104.71.*
C++中,throw被强制在运行时,而不是编译时。也就是说,C++编译器不会注意异常说明。

C++中,即使没有任何throw说明,那么一个函数也可以抛出任意一种异常。在Java中,一个没有使用throws说明符的方法根本不能抛出任何已检查异常。
#casularm 发表于2006-03-14 12:01:00  IP: 218.104.71.*
使用JOptionPane制作Config提示框:

int confirm = JOptionPane.showConfirmDialog(this,
"Are you sure?", "Warning",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null);
if (confirm == JOptionPane.YES_OPTION ||
confirm == JOptionPane.OK_OPTION) {
//需要执行的代码
}
#casularm 发表于2006-03-14 12:11:00  IP: 218.104.71.*
使用树进行页面索引:

tree.addTreeSelectionListener(new TreeSelectionListener() {
public void valueChanged(TreeSelectionEvent event) {
TreePath path = selectTree.getSelectionPath();
if (path == null)
return;
DefaultMutableTreeNode selectedNode = (DefaultMutableTreeNode)
path.getLastPathComponent();
if (selectedNode.equals(telescope)) {
jPanel1.setVisible(true);
jPanel2.setVisible(false);
jPanel3.setVisible(false);

} else if (selectedNode.equals(observatory)) {
jPanel1.setVisible(false);
jPanel2.setVisible(true);
jPanel3.setVisible(false);

} else if (selectedNode.equals(database)) {
jPanel1.setVisible(false);
jPanel2.setVisible(false);
jPanel3.setVisible(true);
}
}
}
tree.expandRow(0);//展开根节点
#casularm 发表于2006-03-25 17:18:00  IP: 211.162.6.*
构建树时使用以下方式:
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
DefaultTreeModel treeModel = new DefaultTreeModel(root);
JTree tree = new JTree(treeModel);

而不要用:
DefaultMutableTreeNode root = new DefaultMutableTreeNode("root");
JTree tree = new JTree(root);

否则无法使用TreeModel的setRoot(),reload()等方法

删除根节点:
treeModel.setRoot(null);

更新根节点:
treeModel.setRoot(new DefaultMutableTreeNode("newRoot"));
#casularm 发表于2006-04-06 00:06:00  IP: 211.162.6.*
java内存增长问题解决方法:
1、用GCViewer看看GC情况
2、Optimize和HeapRoot看看内存占用情况
3、查看连接是否没有释放

#casularm 发表于2006-05-08 01:09:00  IP: 211.162.6.*
集合进行迭代的首选做法:
for(Iterator it = list.iterator();it.hasNext();){
doSomething(it.next());
}
#casularm 发表于2006-05-10 16:12:00  IP: 218.104.71.*
如果在循环中访问 static 变量或 instance 变量,则可以将它们暂时存储于一个 local stack 变量中, 如此便能大幅提升程序性能,因为这个动作可为 JVM 提供更高效的 bytecode 指令序列。
#casularm 发表于2006-08-09 22:15:00  IP: 211.162.6.*
可以使用以下方法对FileChooser的不同按钮做出响应
public void jFileChooser1_actionPerformed(ActionEvent e) {
if (e.getActionCommand() == jFileChooser1.CANCEL_SELECTION) {
this.dispose();
}else if(e.getActionCommand() == jFileChooser1.APPROVE_SELECTION){
//ok按钮的响应
}
………………
}
#casularm 发表于2006-08-15 16:36:00  IP: 211.162.10.*
一个可以改变系统状态,并且可以根据状态更改显示文字的按钮
// add button to turn line wrapping on and off
wrapButton = new JButton("Wrap");
buttonPanel.add(wrapButton);
wrapButton.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
boolean wrap = !textArea.getLineWrap();
textArea.setLineWrap(wrap);
scrollPane.validate();
wrapButton.setText(wrap ? "No Wrap" : "Wrap");
}
});
#casularm 发表于2006-08-15 16:56:00  IP: 211.162.10.*
使用JTextPane显示不同颜色的文字
它可以设置每节文字的字体、颜色,还可以插入图片和其它swing组件:

import javax.swing.*;
import java.awt.*;
import javax.swing.text.*;
import java.io.*;

public class Test {
JFrame frame = null;

JTextPane textPane = null;

File file = null;

Icon image = null;

public Test() {
frame = new JFrame("JTextPane");
textPane = new JTextPane();
file = new File("./classes/test/icon.gif");
image = new ImageIcon(file.getAbsoluteFile().toString());
}

public void insert(String str, AttributeSet attrSet) {
Document doc = textPane.getDocument();
str = "\n" + str;
try {
doc.insertString(doc.getLength(), str, attrSet);
} catch (BadLocationException e) {
System.out.println("BadLocationException: " + e);
}
}

public void setDocs(String str, Color col, boolean bold, int fontSize) {
SimpleAttributeSet attrSet = new SimpleAttributeSet();
StyleConstants.setForeground(attrSet, col);
// 颜色
if (bold == true) {
StyleConstants.setBold(attrSet, true);
}// 字体类型
StyleConstants.setFontSize(attrSet, fontSize);
// 字体大小
// StyleConstants.setFontFamily(attrSet, "黑体");
// 设置字体
insert(str, attrSet);
}

public void gui() {
textPane.insertIcon(image);
setDocs("第一行的文字", Color.red, false, 20);
setDocs("第二行的文字", Color.BLACK, true, 25);
setDocs("第三行
#casularm 发表于2006-08-15 19:38:00  IP: 211.162.10.*
将鼠标焦点移至输出文字的末尾,以实现JTextPane自动滚屏的功能。
javax.swing.text.Document doc = jTextPane.getDocument();
jTextPane.setCaretPosition(doc.getLength());
#casularm 发表于2007-03-17 19:04:48  IP: 211.138.182.*
依次读取一个目录下的所有文件

如果没有子目录
假设有目录为:E:\Target

File file = new File("E:/Target");
File[] listfile = file.listFiles();
for (int i = 0; i < listfile.length; i++) {
BufferedReader in = new BufferedReader(new FileReader(
listfile[i]));
scf.targetStarCatalogFormat(in,listfile[i].getName());
}

如果含有子目录
public void deleteTree(File path){
File[] files = path.listFiles();

for(int i=0;i<files.length;i++){
File child = files[i];
if (child.isDirectory()){
deleteTree(child);
}
child.deleteFile();
}
}
#casularm 发表于2007-08-30 20:40:43  IP: 220.248.229.*
JTree添加到JScrollPane之后就不要再设置size了,否则就丧失了自动滚动的功能。
kinaseClanTree.setPreferredSize(new Dimension(200, 500));
#casularm 发表于2007-08-30 20:53:25  IP: 220.248.229.*
用Swing做界面的时候,如果遇到使用JProgressBar或JList等需要及时刷新显示的组件时,应使用内部类开新线程,而非外部类。不要在主线程设置线程同步器,如concurrent.CountDownLatch或者CyclicBarrier等,也不要在主线程永Thread.sleep()。不然界面无法得到及时刷新,直到线程结束才一起更新。
发表评论  


登录
Csdn Blog version 3.1a
Copyright © 幽客独往