java計數器-九游会j9娱乐平台
a. java中垃圾回收機制的原理是什麼
gc的工作原理: 引用計數,標記復制"引用計數"是一種簡單但速度很慢的垃圾回收技術.所有對象都有一個引用計數器,當有引用連接時計數器加1,當引用離開作用域時或者被置於null時,計數器-1,垃圾回收器會在所有包含對象引用的列表上進行遍歷,當發現某個對象的引用計數為0時,就釋放佔用的空間."標記復制"的運行機制,垃圾回收器遍歷包含所有引用的列表,當發現存活的對象引用時做上標記,這樣當遍歷完所有對象引用並做上標記的時候,執行垃圾回收,將沒有標記的對象堆空間釋放.
垃圾回收機制的優點: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]);
}
}