在計算機快速發(fā)展的今天,計算機行業(yè)的人才需求量也是越來越多,很多人開始選擇從計算機方法進(jìn)行發(fā)展。
成都創(chuàng)新互聯(lián)主營清原網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā)公司,清原h(huán)5小程序開發(fā)搭建,清原網(wǎng)站營銷推廣歡迎清原等地區(qū)企業(yè)咨詢
很多人都知道,計算機方面的知識是比較復(fù)雜的,學(xué)習(xí)起來會遇到很多的困難,Java語言是軟件開發(fā)中使用最多的語言,那么對于初學(xué)者應(yīng)該如何進(jìn)行選擇呢?學(xué)習(xí)Java語言開發(fā)的過程中,什么是最關(guān)鍵的?應(yīng)該如何進(jìn)行學(xué)習(xí)?下面電腦培訓(xùn)為大家介紹初學(xué)Java的關(guān)鍵。
一、學(xué)習(xí)靜態(tài)方法和屬性在學(xué)習(xí)Java開發(fā)中,靜態(tài)語言和屬性的使用是非常關(guān)鍵的,主要是用于描述某一類對象群體的特征,而不是屬于單個對象的特征。
在Java中需要大量的使用靜態(tài)方法和屬性,這個技巧是非常關(guān)鍵的,但是有一個缺點就是這種語言不能被頻繁的使用。
在學(xué)習(xí)過程中,靜態(tài)方法和屬性對于后期理解類和對象內(nèi)容有很大的幫助,在進(jìn)行Java開發(fā)時,靜態(tài)方法和屬性的使用是非常頻繁的。
二、重視接口問題類繼承在早期面向?qū)ο蟮膽?yīng)用程序中大量使用。
隨著軟件工程理論的不斷發(fā)展,人們開始意識到繼承的諸多缺點,并開始嘗試使用聚合而不是繼承。
IT培訓(xùn)認(rèn)為能夠很好的解決可擴(kuò)展性的軟件工程的重要原則的抽象描述,并且還能直接使用的工具是界面。
接口已經(jīng)逐漸成為近年來Java編程的核心。
三、集合框架的學(xué)習(xí)Java進(jìn)行描述復(fù)雜數(shù)據(jù)結(jié)構(gòu)的主要方式是集合框架。
Java沒有任何指針,而是復(fù)雜數(shù)據(jù)結(jié)構(gòu)的復(fù)雜集合,例如數(shù)組和對象數(shù)組。
學(xué)習(xí)這些數(shù)據(jù)結(jié)構(gòu)的描述對于應(yīng)用程序編程至關(guān)重要,特別是在涉及服務(wù)器端的3層結(jié)構(gòu)編程時。
此時,北京北大青鳥發(fā)現(xiàn)可能出現(xiàn)程序員無法再使用諸如數(shù)據(jù)庫結(jié)果集之類的結(jié)構(gòu)來描述數(shù)據(jù)的情況。
四、多線程的理解機理在進(jìn)行學(xué)習(xí)Java語言的時候,很多人對多線程程序的編寫非常感興趣,畢竟這是對邏輯能力最大的挑戰(zhàn)。
但是在進(jìn)行開發(fā)的過程中,其實很多應(yīng)用都會不需要使用多線程程序,并且很多厲害的應(yīng)用程序員在編寫代碼的過程中也是不需要使用多線程的。
一般情況下,北大青鳥北京計算機學(xué)院發(fā)現(xiàn)多線程機制主要是使用到基礎(chǔ)平臺中。
利用struts2的上傳下載
package?com.java.action;
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.FileNotFoundException;
import?java.io.IOException;
import?java.io.InputStream;
import?java.io.UnsupportedEncodingException;
import?java.net.URLEncoder;
import?org.apache.commons.io.FileUtils;
import?org.apache.struts2.ServletActionContext;
import?com.opensymphony.xwork2.ActionSupport;
public?class?FileAction?extends?ActionSupport?{
/**
*?用于上傳的變量
*/
//封裝該文件域?qū)?yīng)的文件內(nèi)容
private?File[]?upload;
//封裝該文件域?qū)?yīng)的文件的文件名
private?String[]?uploadFileName;
//封裝該文件域?qū)?yīng)的文件的文件類型
private?String[]?uploadContentType;
/**
*?用于下載的變量
*/
private?String[]?fileNames;
private?String?fileName;
/**
*?設(shè)置getter和setter
*?@return
*/
public?String[]?getFileNames()?{
return?fileNames;
}
public?File[]?getUpload()?{
return?upload;
}
public?void?setUpload(File[]?upload)?{
this.upload?=?upload;
}
public?String[]?getUploadFileName()?{
return?uploadFileName;
}
public?void?setUploadFileName(String[]?uploadFileName)?{
this.uploadFileName?=?uploadFileName;
}
public?String[]?getUploadContentType()?{
return?uploadContentType;
}
public?void?setUploadContentType(String[]?uploadContentType)?{
this.uploadContentType?=?uploadContentType;
}
public?void?setFileNames(String[]?fileNames)?{
this.fileNames?=?fileNames;
}
public?String?getFileName()?{
return?fileName;
}
public?void?setFileName(String?fileName)?{
this.fileName?=?fileName;
}
/**
*?用于上傳文件的方法
*?@return
*/
public?String?upload(){
//設(shè)置文件上傳到的位置
String?path?=?ServletActionContext.getServletContext().getRealPath("/file");
//設(shè)置文件目標(biāo)
try?{
for?(int?i?=?0;?i??upload.length;?i++)?{
File?target?=?new?File(path,?uploadFileName[i]);
FileUtils.copyFile(upload[i],?target);
}
return?SUCCESS;
}?catch?(IOException?e)?{
e.printStackTrace();
}
return?INPUT;
}
/**
*?得到所有上傳的文件的名稱
*?@return
*/
public?String?fileList(){
String?path?=?ServletActionContext.getServletContext().getRealPath("/file");
fileNames?=?new?File(path).list();
return?SUCCESS;
}
/**
*?用于下載文件的方法
*?@return
*/
public?InputStream?getInputStream(){
if(fileName==null?||?fileName.isEmpty())?return?null;
String?path?=?ServletActionContext.getServletContext().getRealPath("/file");
try?{
return?new?FileInputStream(new?File(path,fileName));
}?catch?(FileNotFoundException?e)?{
e.printStackTrace();
}
return?null;
}
public?String?getContentDisposition(){
try?{
if(fileName==null||fileName.isEmpty()){
return?"inline";
}
return?"attachment;filename="+URLEncoder.encode(fileName,?"UTF-8");
}?catch?(UnsupportedEncodingException?e)?{
e.printStackTrace();
}
return?"inline";
}
}
比java的io方便多了
每一個對象都有一把獨占鎖。獨占鎖只限制線程對它的同步方法的訪問,對非同步方法,獨占鎖沒有意義。
synchronized是java中解決同步問題的一個方法。synchronized可以用來修飾方法,這樣的方法就是同步方法。一個對象里可以有任意多個同步方法。任意時間里只能有一個線程訪問這些同步方法。例如,現(xiàn)成T1在訪問同步方法M1,此時還有一個同步方法M2此時無人訪問,但是由于已經(jīng)有一個線程正在訪問這個對象的同步方法M1,所以試圖訪問M2的線程將被阻塞。直到T1對M1的訪問結(jié)束。
可見同步方法有在一個同步方法運行期內(nèi)保證只有一個線程能夠進(jìn)入。一旦方法結(jié)束,里面的線程就會失去對該對象的獨占權(quán)。
synchronized語句塊,可以指定要獲得哪個對象的獨占權(quán),一旦獲得,在語塊執(zhí)行過程中,線程會始終掌握該對象的獨占權(quán)。此時,它可以連續(xù)訪問多個該對象的同步方法。在整個過程中,獨占權(quán)都牢牢掌握在該線程手中,其它線程沒有任何機會。而如果沒有同步語句塊,則如果連續(xù)訪問某個對象的同步方法,則在前一個方法返回,到下一個方法調(diào)用的間隙內(nèi),其他線程有機會搶先獲得該對象的獨占權(quán)。
final在Java中是一個保留的關(guān)鍵字,可以聲明成員變量、方法、類以及本地變量。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變量再次初始化的話,編譯器會報編譯錯誤。
Java是一種可以撰寫跨平臺應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計語言。Java技術(shù)具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應(yīng)用于PC、數(shù)據(jù)中心、游戲控制臺、科學(xué)超級計算機、移動電話和互聯(lián)網(wǎng),同時擁有全球最大的開發(fā)者專業(yè)社群。
public gongnengJF() {
initComponents();
if(MessagePost.getUserPost().equals("職工")){
this.jMenuItem2.setEnabled(false);
里面initComponents什么意思setEnabled是什么?
/*
initComponents()
是你在使用GUI工具設(shè)計GUI界面時,NetBeans系統(tǒng)自動生成的方法。其功能是在界面添加各個組件,并為它們注冊監(jiān)聽器。把initComponents()放在構(gòu)造方法中,目的在于:在主類調(diào)用構(gòu)造方法初始化時,完成了界面的繪制。
setEnabled(false)
是設(shè)置組件是否可用。
為false時,是不可用。
*/
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
new pingcebumen().setVisible(true);
this.setVisible(false);
}
private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
String newpwd=javax.swing.JOptionPane.showInputDialog(rootPane, "輸入新密碼");
String sql="update renyuanlist password ="+newpwd+"where username ='"+MessagePost.getUserName()+"'";
Database db = new Database();
db.executeDML(sql);
}
private void jMenuItem1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
new ziliao().setVisible(true);
String newpwd = null;
String sql="select * from renyuanlist where password ="+newpwd+"where username ='"+MessagePost.getUserName()+"'";
}
private void jMenu1MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
new ziliao().setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
MessagePost.setUserPost("職工");
new gongnengJF().setVisible(true);
}
});
}
// Variables declaration - do not modify
//私有的成員屬性,定義GUI圖形界面的按鈕,菜單等。
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
Swing是一組Java程序元件,它能夠創(chuàng)建圖象用戶接口(GUI)元件,如按鈕和滾動條,它們獨立于特定操作系統(tǒng)的開窗口系統(tǒng)。Swing元件使用Java Foundation Classes(JFC)。
new gongnengJF().setVisible(true);
this.setVisible(false);
通過new 創(chuàng)建的對象,與this不是同一個對象。
鼠標(biāo)監(jiān)聽事件,包括單擊,雙擊等。。。