当前位置:首页 » 编程语言 » java计数器

java计数器

发布时间: 2024-07-14 07:38:12

A. java中垃圾回收机制的原理是什么

  1. GC的工作原理: 引用计数,标记复制"引用计数"是一种简单但速度很慢的垃圾回收技术.所有对象都有一个引用计数器,当有引用连接时计数器加1,当引用离开作用域时或者被置于NULL时,计数器-1,垃圾回收器会在所有包含对象引用的列表上进行遍历,当发现某个对象的引用计数为0时,就释放占用的空间."标记复制"的运行机制,垃圾回收器遍历包含所有引用的列表,当发现存活的对象引用时做上标记,这样当遍历完所有对象引用并做上标记的时候,执行垃圾回收,将没有标记的对象堆空间释放.

  2. 垃圾回收机制的优点:Java的垃圾回收机制使得java程序员不用担心内存空间的分配,减少了内存溢出.但同时也牺牲了一定的性能.

B. 用java编写一个计数器或计时器

importjava.awt.BorderLayout;
importjava.awt.Container;
importjava.awt.Font;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;

importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JOptionPane;
importjavax.swing.JPanel;
importjavax.swing.JTextField;

{

=201306211111L;
privateJTextFieldscreen=newJTextField("0");
privateJButtonstart=newJButton("开始");
privateJButtonreset=newJButton("重置");
privateJPanelpanel=newJPanel();
privatebooleanisRunning;
privateinttime;
privateinttimeBetween;

publicTimerDemo(inttimeBetween){
super("计时器");
this.timeBetween=timeBetween;
try{
init();
}catch(Exceptione){
e.printStackTrace();
}
}

publicTimerDemo(){
super("计时器");
this.timeBetween=100;
try{
init();
}catch(Exceptione){
e.printStackTrace();
}
}

privatevoidinit(){

panel.setLayout(newGridLayout());
panel.add(start);
panel.add(reset);
start.addActionListener(this);
reset.addActionListener(this);
screen.setFont(newFont("幼圆",Font.BOLD,60));
screen.setHorizontalAlignment(JTextField.CENTER);
screen.setEditable(false);

Containerc=getContentPane();
c.setLayout(newBorderLayout());
c.add(panel,BorderLayout.SOUTH);
c.add(screen,BorderLayout.CENTER);

this.setSize(200,150);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
this.setLocationRelativeTo(null);
this.setVisible(true);
}

publicstaticvoidmain(String[]args){
newTimerDemo(1);//设定1ms/次
//newTimerDemo();
}

@Override
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==start){
if(start.getText().equals("开始")){
start.setText("暂停");
isRunning=true;
}elseif(start.getText().equals("暂停")){
start.setText("开始");
isRunning=false;
}

}
if(e.getSource()==reset){
start.setText("开始");
screen.setText("0");
isRunning=false;
time=0;
}
newThread(newTimeZone()).start();
}

{

@Override
publicvoidrun(){
while(isRunning){
time++;
if(time>=Integer.MAX_VALUE){
screen.setText("ERROR");
JOptionPane.showMessageDialog(null,"ERROR");
isRunning=false;
}
screen.setText(String.valueOf(time));
try{
Thread.sleep(timeBetween);
}catch(Exceptione){
e.printStackTrace();
}
}
}

}

}

C. 鐢╦ava缂栧缑璁$畻鍣ㄧ▼搴忚蒋浠跺拰婧愪唬镰

java璁$畻鍣ㄦ簮绋嫔簭
java璁$畻鍣

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class calculation extends JFrame
{public calculation() /*鏋勯犳柟娉*/
{super("璁℃暟鍣");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
initTextPanel(); /*鏂囨湰妗*/
initControlPanel(); /*鎺у埗阌*/
initKeyPanel(); /*鏁板瓧鍜岃繍绠楃*/
Container pane = getContentPane();
pane.setLayout(new BorderLayout());
pane.add(TextPanel,BorderLayout.NORTH);
pane.add(ControlPanel,BorderLayout.CENTER);
pane.add(KeyPanel,BorderLayout.SOUTH);
pack();
try
{UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
}
catch(Exception ex)
{;} /璁╅敭*璁剧疆Windons瑙傛劅*/
SwingUtilities.updateComponentTreeUI(this);
setResizable(false);
setVisible(true);
}

private void initTextPanel() /*璁剧疆鏂囨湰妗*/
{ TextPanel=new JPanel();
TextPanel.setLayout(new FlowLayout());
Resultarea =new JTextField("0",25);
Resultarea.setEditable(false); /*璁剧疆涓嶅彲缂栬緫*/
Color color=Color.white;
Resultarea.setBackground(color); /*棰滆壊*/
Resultarea.setHorizontalAlignment(JTextField.RIGHT); /*璁炬墥婊戞壆缃鏄剧ず浣岖疆*/
TextPanel.add(Resultarea);
}

private void initControlPanel() /*璁剧疆鎺у埗阌鏄ョ伓*/
{ControlPanel=new JPanel();
ControlPanel.setLayout(new GridLayout(1,3,4,4));
JButton b1=new JButton("Backspace"); /*Backspace阌*/
b1.setFont(font1);
b1.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{String s1=Resultarea.getText();
int l=s1.length();
Resultarea.setText(s1.substring(0 ,l-1));
}
});

ControlPanel.add(b1);
JButton b2=new JButton("CE"); /*CE阌*/
b2.setFont(font1);
b2.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{Resultarea.setText("0");
isNew=true;
}
});
ControlPanel.add(b2);

JButton b3=new JButton("C"); /*C阌*/
b3.setFont(font1);
b3.addActionListener(new ActionListener()
{public void actionPerformed(ActionEvent e)
{Resultarea.setText("0");
pnum="";
operation="";
isNew=true;
}
});
ControlPanel.add(b3);
}

private void initKeyPanel() /*璁剧疆鏁板瓧阌鍜岃繍绠楃﹂敭*/
{String key[] = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","0","+/-",".","+","="};
KeyPanel = new JPanel();
KeyPanel.setLayout(new GridLayout(4,5,4,4));
for(int i=0;i<20;i++)
{String label = key[i];
JButton b = new JButton(label);
b.setActionCommand(key[i]);
b.setFont(font2);
KeyPanel.add(b);
b.addActionListener(new ActionListener() /*镞犲悕鐩戝惉鍣*/
{public void actionPerformed(ActionEvent e)
{Key_actionPerformed(e);
}
});
}
}
public void Key_actionPerformed(ActionEvent e) /*鏁板瓧阌鍜岃繍绠楃﹂敭镞犲悕鐩戝惉鍣*/
{String s=(e.getActionCommand());
String st=Resultarea.getText();
if(s.equals("0")) /*杈揿叆鏁颁负0*/
{if(st.equals("0"))
return;
else
{if(!isNew)
Resultarea.setText(st+"0");
else
Resultarea.setText("0");
}
isNew=false;
return;
}

if(s.equals("+/-")) /*杈揿叆鏁颁负+/-*/
{double k=Double.parseDouble(st);
{if(k!=0)
display(-k);

}
return;
}

if(s.equals("1")||s.equals("2")||s.equals("3")||s.equals("4")||s.equals("5")||s.equals("6")||s.equals("7")||s.equals("8")||s.equals("9")) /*杈揿叆1-9*/
{if(!isNew)
Resultarea.setText(st+s);
else
{ Resultarea.setText(s);
isNew=false;
}
return;
}

if(s.equals(".")) /*杈揿叆灏忔暟镣*/
{if(Resultarea.getText().indexOf(".")==-1) /*涓嶅瓨鍦ㄥ皬鏁扮偣*/
{if(isNew)
{Resultarea.setText("0.");
isNew=false;
}
else
Resultarea.setText(st+".");
}
return;
}

isNew=true; /*鎸変笅杩愮畻绗︼纴杈揿叆鏂扮殑鏁*/
if(s.equals("="))
{compute(s);
operation="";
}
else
{if(s.equals("+")||s.equals("-")||s.equals("*")||s.equals("/")) /*浜岀洰杩愮畻绗﹀彿*/
{if(operation.equals(""))
{pnum=Resultarea.getText();
operation=s;
}
else
compute(s);
}
else /*涓鐩杩愮畻*/
{Count count1=new Count(Double.parseDouble(st));
if(s.equals("sqrt"))
{
display(count1.sqrt());

}
else
{if(s.equals("1/x"))
{if(st.equals("0"))
{Resultarea.setText("闄ゆ暟涓嶈兘涓0.");
operation="";
pnum="";
}
else
display(count1.reciprocal()); /*姹傚掓暟*/
}
else
display(Double.parseDouble(st)/100); /*杈揿叆%锛屼娇褰揿墠鏄剧ず镄勫奸櫎浜100*/
}
}
}
}

private void compute(String s)
{if(s.equals("="))
{if(operation.equals(""))
return;
}
double data1=Double.parseDouble(pnum);
double data2=Double.parseDouble(Resultarea.getText());
Count count2=new Count(data1,data2); /*锷犲噺涔橀櫎璁$畻*/
if(operation.equals("+"))
display((count2.plus()));
else
{if(operation.equals("-"))
display((count2.minus()));
else
{if(operation.equals("*"))
display((count2.multiply()));
else
if(operation.equals("/"))
{if(data2==0)
{Resultarea.setText("闄ゆ暟涓嶈兘涓0");
operation="";
pnum="";
return;
}
else
display((count2.divide()));
}
}
}
operation=""; /*绗﹀彿涓哄綋鍓岖*/
pnum=Resultarea.getText();/*杩愮畻鏁颁负褰揿墠鏂囨湰鏁*/
}

public void display(double result) /*鏄剧ず杈揿嚭鏂规硶*/
{int a=(int)result;
if(a==result)
Resultarea.setText(String.valueOf(a));
else
Resultarea.setText(String.valueOf(result));
if(Resultarea.getText().equals("NaN"))
Resultarea.setText("杈揿叆鍑芥暟镞犳晥");
}

private JPanel TextPanel; /*鏂囨湰妗嗘夋澘*/
private JTextField Resultarea; /*鏂囨湰妗*/
private JPanel ControlPanel; /*鎺у埗阌阌闱㈡澘*/
private JPanel KeyPanel; /*鏁板瓧阌鍜岃繍绠楃﹂敭闱㈡澘*/
private Font font1=new Font("Dialog",0, 10); /*鎺у埗阌瀛椾綋*/
private Font font2 = new Font("Dialog",0,10); /*鏁板瓧阌鍜岀﹀彿阌瀛椾綋*/
private String pnum=""; /*鍓嶆搷浣沧暟*/
private boolean isNew=true; /*鎺у埗鏄钖︽槸鏂版暟*/
private String operation=""; /*杩愮畻绗*/
}

class tester /*娴嬭瘯绫*/
{
public static void main(String[] args)
{
new calculation();
}
}

D. JRE和JVM有什么关系

简单地说,jre包含jvm,jvm是运行java的核心虚拟机,而运行java程序不仅需要核心虚拟机,还需要其他的类加载器,字节码校验器,以及大量的基础类库。jre除了包含jvm外,还包含运行java程序的其他环境支持。

jre 即java运行时环境,全称是Java Runtime Environment,是java程序运行的必须条件。jvm (Java Virtual Machine) 即java虚拟机,是可以运行java字节码文件的虚拟计算机。

(4)java计数器扩展阅读

JRE是运行基于Java语言编写的程序所不可缺少的运行环境。也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。

与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。

金字塔结构 JDK=JRE+JVM+其它运行Java程序一般都要求用户的电脑安装JRE环境(Java Runtime Environment);没有jre,java程序无法运行;而没有java程序,jre就没有用武之地。

E. 如何用JAVA写一个计数器让它能自动按顺序产生学号或员工编号这类的资料呢

你的这个问题其实挺有意思的,你先想一下你这个表打算怎么设计。

首先你先要设计一个年级班级表,比如年级表就是2015.2016.2015级。然后班级表。计算机系
01软件工程02应用化学03。不细分了,就是按系就是班了。
那么学生表就是
idstu_idgreedclassname.....其他信息
主键学号年级班级名字其他
大概就这个简单设计下。greed和class在其他的表都有这个东西,所以就根据这两个的规则来
生成学生的学号。在录入的时候先查已经入库的这个年纪班级下的所有记录。如果有就有一个
学号的id比如201501110这个。这样再新增就给下一个学生+1。如果没有,那么就从
201501001开始往上加。

这种问题其实你可以想一下你们学校的学号是怎么设计的。

F. JAVA 类的对象的计数器

一楼用System.gc();来调用finalize()方法是不确定的,得到的结果是不稳定的。最好定义一个static类型的方法,来销毁类例如:
public class Test {
public static int num = 0;
public Test() {
num ++;
System.out.println("NO=" + num);
}
//静态删除方法,用类名可以直接调用
public static void delete(Test o) {
num --;
System.out.println("NO=" + num);
o=null;
}
public static void main(String [] args) {
Test [] objs = new Test[5];
for(Test obj: objs) {
obj = new Test();
}
Test.delete(objs[1]);
Test.delete(objs[0]);
}
}

热点内容
猫咪国外访问 发布:2024-11-26 09:32:05 浏览:617
威立信监控原始密码是多少 发布:2024-11-26 09:24:06 浏览:488
超凡先锋选择不了服务器该怎么办 发布:2024-11-26 09:15:56 浏览:337
搭建ff服务器喝茶 发布:2024-11-26 09:10:09 浏览:846
乐山云服务器公司 发布:2024-11-26 08:59:44 浏览:954
ftp工具可以上传吗 发布:2024-11-26 08:55:04 浏览:570
压缩量密封 发布:2024-11-26 08:52:10 浏览:582
java把一个list 发布:2024-11-26 08:38:38 浏览:586
混沌珠算法 发布:2024-11-26 08:29:17 浏览:164
阿里云解析不到服务器 发布:2024-11-26 07:57:59 浏览:493