包含java基礎day4的詞條

本文目錄一覽:

JAVA基礎入門教程 -

第一階段:Java語言基礎

★ Java語言基礎

1、面向對象思維JAVASE

2、(類載入機制與反射,annotation,泛型,網路編程,多線程,IO,異常處理,常用API,面向對象,JAVA編程基礎)

3、Java8新特性

JAVA戰狼班第二階段:資料庫

★ 資料庫

1、Oracle(SQL語句、SQL語句原理、SQL語句優化、表、視圖

2、序列、索引、Oracle數據字典、Oracle 資料庫PL/SQL開發

3、資料庫設計原則、 MySQL 、 JDBC

第三階段:Web基礎

★ Web基礎

1、HTML5(H5)基本文檔結構、鏈接、列表、表格、表單;

2、CSS 基礎語法、盒子模型、浮動布局、定位;

3、JavaScript語言基礎、DOM 編程、事件模型等),JQuery,AJAX框架,XML,BootStrap組件

第四階段:Java Web技術和主流框架

★ Java Web技術和主流框架

1、JSPServlet、struts2,hibernate4,spring4,JPA,maven

2、SpringData,SpringMVC,MyBatis,SpringSecurity,shiro,Nginx

第五階段:Linux

★ Linux

1、Linux安裝、熟悉Linux的基礎命令、vi編輯器的使用、awk和sed命令使用、用戶和組

2、文件及目錄許可權管理、使用ACL進行高級訪問控制、網路配置和軟體包安裝、啟動流程和服務管理

3、系統監控和日誌管理、進程管理和計劃任務、ssh遠程登錄、shell基礎和shell腳本。

第六階段:大數據技術(Hadoop和Spark)

★ 大數據技術(Hadoop和Spark)

1、Hadoop (Hadoop基礎和環境搭建,HDFS體系結構,MapReduce;Hadoop的集群模式、HDFS聯盟,利用ZooKeeper來實現Hadoop集群的HA(高可用性)功能

2、Yarn的任務調度機制,Apache Hive,Pig數據處理,集成Hadoop和Sqoop

3、Flume以及Apache Kafka來實現數據的交換,安裝部署HBase,Storm)

4、Scala 語言(Scala環境搭建、Scala基礎語法、模式匹配、重載與構造器、Map與reduce、元組、繼承、StringContext,Option Some None,Tuple;集合方法和運算,future 對象同步處理和非同步處理返回結果)

5、Spark(Spark搭建,Spark-shell 的使用,Spark-submit 提交應用, Spark的內核設計和實現,並對內核中的實現架構、運行原理進行詳細的講解;Spark生態體系中的各個組件,包括:Spark Core,Shark,Spark SQL和Spark Streaming等等)

第七階段:項目

★ 項目

1、China-UCSP 項目 SSM(Spring+SpringMVC+MyBatis)

2、用戶關係管理系統 S2SH+Maven+Nodejs+MySQL技術實戰開發

3、電子商務交易平台 S2SH+Maven+Shiro+Oracle

java的基礎知識有哪些

JavaEE基礎中包含的知識點有:Java基礎語法、面向對象、核心類庫、集合、異常、IO、線程、JDK新特性。

JavaWeb開發中包含的知識點有:前端技術、資料庫、JAVA資料庫操作、軟體伺服器及伺服器相關技術、動態網頁JSP、AJAX、優就業-在線醫療系統。

Java高級框架中包含的知識點有:SpringMVC、MyBatis 、Spring、MySQL高級、LinuxRedisNginx、Maven 、中公MIS許可權系統。

大型微服務分散式項目實戰:SpringBoot、SpringCloud、Git 、Dubbo、Zookeeper、AngularJS、Spring Security、BCrypt加密、FastDFS、分散式事務處理、Redis Cluster、Solr、SolrCloud、Freemarker 、JMS 、簡訊發送平台、SSO解決方案、CORS、Twitter的Snowflake、SpringTask 、Maven Profile、MongoDB簡介、MyCat、Docker、Jenkins、東易買大型電商實戰、東易眾籌。

JAVA初學問題!

Java新手入門的30個基本概念

在我們學習Java的過程中,掌握其中的基本概念對我們的學習無論是J2SE,J2EE,J2ME都是很重要的,J2SE是Java的基礎,所以有必要對其中的基本概念做以歸納,以便大家在以後的學習過程中更好的理解java的精髓,在此我總結了30條基本的概念。

Java概述:

目前Java主要應用於中間件的開發(middleware)—處理客戶機於伺服器之間的通信技術,早期的實踐證明,Java不適合pc應用程序的開發,其發展逐漸變成在開發手持設備,互聯網信息站,及車載計算機的開發.Java於其他語言所不同的是程序運行時提供了平台的獨立性,稱許可以在windows,solaris,linux其他操作系統上使用完全相同的代碼.Java的語法與C++語法類似,C++/C程序員很容易掌握,而且Java是完全的徹底的面向對象的,其中提出了很好的GC(Garbage Collector)垃圾處理機制,防止內存溢出。

Java的白皮書為我們提出了Java語言的11個關鍵特性。

(1)Easy:Java的語法比C++的相對簡單,另一個方面就是Java能使軟體在很小的機器上運行,基礎解釋其和類庫的支持的大小約為40kb,增加基本的標準庫和線程支持的內存需要增加125kb。

(2)分散式:Java帶有很強大的TCP/IP協議族的常式庫,Java應用程序能夠通過URL來穿過網路來訪問遠程對象,由於servlet機制的出現,使Java編程非常的高效,現在許多的大的web server都支持servlet。

(3)OO:面向對象設計是把重點放在對象及對象的介面上的一個編程技術.其面向對象和C++有很多不同,在與多重繼承的處理及Java的原類模型。

(4)健壯特性:Java採取了一個安全指針模型,能減小重寫內存和數據崩潰的可能型。

(5)安全:Java用來設計網路和分布系統,這帶來了新的安全問題,Java可以用來構建防病毒和防攻擊的System.事實證明Java在防毒這一方面做的比較好。

(6)中立體系結構:Java編譯其生成體系結構中立的目標文件格式可以在很多處理器上執行,編譯器產生的指令位元組碼(Javabytecode)實現此特性,此位元組碼可以在任何機器上解釋執行。

(7)可移植性:Java中對基本數據結構類型的大小和演算法都有嚴格的規定所以可移植性很好。

(8)多線程:Java處理多線程的過程很簡單,Java把多線程實現交給底下操作系統或線程程序完成.所以多線程是Java作為伺服器端開發語言的流行原因之一。

(9)Applet和servlet:能夠在網頁上執行的程序叫Applet,需要支持Java的瀏覽器很多,而applet支持動態的網頁,這是很多其他語言所不能做到的。

基本概念:

1.OOP中唯一關係的是對象的介面是什麼,就像計算機的銷售商她不管電源內部結構是怎樣的,他只關係能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有的程序是由一定的屬性和行為對象組成的,不同的對象的訪問通過函數調用來完成,對象間所有的交流都是通過方法調用,通過對封裝對象數據,很大限度上提高復用率。

2.OOP中最重要的思想是類,類是模板是藍圖,從類中構造一個對象,即創建了這個類的一個實例(instance)。

3.封裝:就是把數據和行為結合起在一個包中)並對對象使用者隱藏數據的實現過程,一個對象中的數據叫他的實例欄位(instance field)。

4.通過擴展一個類來獲得一個新類叫繼承(inheritance),而所有的類都是由Object根超類擴展而得,根超類下文會做介紹。

5.對象的3個主要特性

behavior—說明這個對象能做什麼.

state—當對象施加方法時對象的反映.

identity—與其他相似行為對象的區分標誌.

每個對象有唯一的indentity 而這3者之間相互影響.

6.類之間的關係:

use-a :依賴關係

has-a :聚合關係

is-a :繼承關係–例:A類繼承了B類,此時A類不僅有了B類的方法,還有其自己的方法.(個性存在於共性中)

7.構造對象使用構造器:構造器的提出,構造器是一種特殊的方法,構造對象並對其初始化。

例:Data類的構造器叫Data

new Data()—構造一個新對象,且初始化當前時間.

Data happyday=new Data()—把一個對象賦值給一個變數happyday,從而使該對象能夠多次使用,此處要聲明的使變數與對象變數二者是不同的.new返回的值是一個引用。

構造器特點:構造器可以有0個,一個或多個參數

構造器和類有相同的名字

一個類可以有多個構造器

構造器沒有返回值

構造器總是和new運算符一起使用.

8.重載:當多個方法具有相同的名字而含有不同的參數時,便發生重載.編譯器必須挑選出調用哪個方法。

9.包(package)Java允許把一個或多個類收集在一起成為一組,稱作包,以便於組織任務,標準Java庫分為許多包.java.lang java.util java,net等,包是分層次的所有的java包都在java和javax包層次內。

10.繼承思想:允許在已經存在的類的基礎上構建新的類,當你繼承一個已經存在的類時,那麼你就復用了這個類的方法和欄位,同時你可以在新類中添加新的方法和欄位。

11.擴展類:擴展類充分體現了is-a的繼承關係. 形式為:class (子類) extends (基類)。

12.多態:在java中,對象變數是多態的.而java中不支持多重繼承。

13.動態綁定:調用對象方法的機制。

(1)編譯器檢查對象聲明的類型和方法名。

(2)編譯器檢查方法調用的參數類型。

(3)靜態綁定:若方法類型為priavte static final 編譯器會準確知道該調用哪個方法。

(4)當程序運行並且使用動態綁定來調用一個方法時,那麼虛擬機必須調用x所指向的對象的實際類型相匹配的方法版本。

(5)動態綁定:是很重要的特性,它能使程序變得可擴展而不需要重編譯已存代碼。

14.final類:為防止他人從你的類上派生新類,此類是不可擴展的。

15.動態調用比靜態調用花費的時間要長。

16.抽象類:規定一個或多個抽象方法的類本身必須定義為abstract。

例: public abstract string getDescripition

17.Java中的每一個類都是從Object類擴展而來的。

18.object類中的equal和toString方法。

equal用於測試一個對象是否同另一個對象相等。

toString返回一個代表該對象的字元串,幾乎每一個類都會重載該方法,以便返回當前狀態的正確表示.

(toString 方法是一個很重要的方法)

19.通用編程:任何類類型的所有值都可以同object類性的變數來代替。

20.數組列表:ArrayList動態數組列表,是一個類庫,定義在java.uitl包中,可自動調節數組的大小。

21.class類 object類中的getclass方法返回ckass類型的一個實例,程序啟動時包含在main方法的類會被載入,虛擬機要載入他需要的所有類,每一個載入的類都要載入它需要的類。

22.class類為編寫可動態操縱java代碼的程序提供了強大的功能反射,這項功能為JavaBeans特別有用,使用反射Java能支持VB程序員習慣使用的工具。

能夠分析類能力的程序叫反射器,Java中提供此功能的包叫Java.lang.reflect反射機制十分強大.

1.在運行時分析類的能力。

2.在運行時探察類的對象。

3.實現通用數組操縱代碼。

4.提供方法對象。

而此機制主要針對是工具者而不是應用及程序。

反射機制中的最重要的部分是允許你檢查類的結構.用到的API有:

java.lang.reflect.Field 返回欄位.

java.reflect.Method 返回方法.

java.lang.reflect.Constructor 返回參數.

方法指針:java沒有方法指針,把一個方法的地址傳給另一個方法,可以在後面調用它,而介面是更好的解決方案。

23.介面(Interface)說明類該做什麼而不指定如何去做,一個類可以實現一個或多個interface。

24.介面不是一個類,而是對符合介面要求的類的一套規範。

若實現一個介面需要2個步驟:

1.聲明類需要實現的指定介面。

2.提供介面中的所有方法的定義。

聲明一個類實現一個介面需要使用implements 關鍵字

class actionB implements Comparable 其actionb需要提供CompareTo方法,介面不是類,不能用new實例化一個介面.

25.一個類只有一個超類,但一個類能實現多個介面。Java中的一個重要介面:Cloneable

26.介面和回調.編程一個常用的模式是回調模式,在這種模式中你可以指定當一個特定時間發 生時回調對象上的方法。

例:ActionListener 介面監聽.

類似的API有:java.swing.JOptionPane

java.swing.Timer

java.awt.Tookit

27.對象clone:clone方法是object一個保護方法,這意味著你的代碼不能簡單的調用它。

28.內部類:一個內部類的定義是定義在另一個內部的類。

原因是:

1.一個內部類的對象能夠訪問創建它的對象的實現,包括私有數據。

2.對於同一個包中的其他類來說,內部類能夠隱藏起來。

3.匿名內部類可以很方便的定義回調。

4.使用內部類可以非常方便的編寫事件驅動程序。

29.代理類(proxy):

1.指定介面要求所有代碼

2.object類定義的所有的方法(toString equals)

30.數據類型:Java是強調類型的語言,每個變數都必須先申明它都類型,java中總共有8個基本類型.4種是整型,2種是浮點型,一種是字元型,被用於Unicode編碼中的字元,布爾型。

一、入門

《Java 2從入門到精通》- 推薦

《Thinking in Java》- 強烈推薦*

O』reilly的Java編程基礎系列 - 參考*

二、進階

《Java Cook Book》- 非常推薦* (包含了Java編程的Tips,適合當做手冊來查閱)

《O』reilly-Java IO》- 推薦* (包含Java IO編程的各個方面)

《O』reilly-Database Programming with JDBC》- 推薦* (JDBC編程)

《O』reilly-Java Programming with Oracle JDBC》- 參考*

三、Java Web編程

《O』reilly-Java Server Pages》- 強烈推薦*

《O』reilly-Java Servlet Programming》- 非常推薦*

《O』reilly-Jakarta Struts》- 推薦* (Java Web編程的一個MVC實現框架Struts的書)

四、EJB編程

《J2EE應用與BEA Weblogic Server》- 強烈推薦

《Mastering EJB 2.0》- 非常推薦*

《Enterprise Java Bean》- 推薦*

五、Java XML編程

《O』reilly-Java and XML》- 推薦*

《O』reilly-Java and SOAP》- 參考* (Java的SOAP編程)

六、設計模式

《Core J2EE Patterns》- 強烈推薦* (J2EE設計模式,設計企業應用軟體必備參考書)

《EJB Design Patterns》- 推薦*

頁面功能 【加入收藏】 【推薦給朋友】 【字體:大 中 小】 【關閉】

java編程規範-

作者:佚名 來自:未知

命名規範

定義這個規範的目的是讓項目中所有的文檔都看起來像一個人寫的,增加可讀性,減少項目組中因為換人而帶來的損失。(這些規範並不是一定要絕對遵守,但是一定要讓程序有良好的可讀性)

Package 的命名

Package 的名字應該都是由一個小寫單片語成。

Class 的命名

Class 的名字必須由大寫字母開頭而其他字母都小寫的單片語成

Class 變數的命名

變數的名字必須用一個小寫字母開頭。後面的單詞用大寫字母開頭。

Static Final 變數的命名

Static Final 變數的名字應該都大寫,並且指出完整含義。

參數的命名

參數的名字必須和變數的命名規範一致。

數組的命名

數組應該總是用下面的方式來命名:

byte[] buffer;

而不是:

byte buffer[];

方法的參數

使用有意義的參數命名,如果可能的話,使用和要賦值的欄位一樣的名字:

SetCounter(int size){

this.size = size;

}

Java 文件樣式

所有的 Java(*.java) 文件都必須遵守如下的樣式規則

版權信息

版權信息必須在 java 文件的開頭,比如:

/**

* Copyright ? 2000 Shanghai XXX Co. Ltd.

* All right reserved.

*/

其他不需要出現在 javadoc 的信息也可以包含在這裡。

Package/Imports

package 行要在 import 行之前,import 中標準的包名要在本地的包名之前,而且按照字母順序排列。如果 import 行中包含了同一個包中的不同子目錄,則應該用 * 來處理。

package hotlava.net.stats;

import java.io.*;

import java.util.Observable;

import hotlava.util.Application;

這裡 java.io.* 使用來代替InputStream and OutputStream 的。

Class

接下來的是類的注釋,一般是用來解釋類的。

/**

* A class representing a set of packet and byte counters

* It is observable to allow it to be watched, but only

* reports changes when the current set is complete

*/

接下來是類定義,包含了在不同的行的 extends 和 implements

public class CounterSet

extends Observable

implements Cloneable

Class Fields

接下來是類的成員變數:

/**

* Packet counters

*/

protected int[] packets;

public 的成員變數必須生成文檔(JavaDoc)。Proceted、private和 package 定義的成員變數如果名字含義明確的話,可以沒有注釋。

存取方法

接下來是類變數的存取的方法。它只是簡單的用來將類的變數賦值獲取值的話,可以簡單的寫在一行上。

/**

* Get the counters

* @return an array containing the statistical data. This array has been

* freshly allocated and can be modified by the caller.

*/

public int[] getPackets() { return copyArray(packets, offset); }

public int[] getBytes() { return copyArray(bytes, offset); }

public int[] getPackets() { return packets; }

public void setPackets(int[] packets) { this.packets = packets; }

其它的方法不要寫在一行上

構造函數

接下來是構造函數,它應該用遞增的方式寫(比如:參數多的寫在後面)。

訪問類型 (‘public’, ‘private’ 等.) 和 任何 ‘static’, ‘final’ 或 ‘synchronized’ 應該在一行中,並且方法和參數另寫一行,這樣可以使方法和參數更易讀。

public

CounterSet(int size){

this.size = size;

}

克隆方法

如果這個類是可以被克隆的,那麼下一步就是 clone 方法:

public

Object clone() {

try {

CounterSet obj = (CounterSet)super.clone();

obj.packets = (int[])packets.clone();

obj.size = size;

return obj;

}catch(CloneNotSupportedException e) {

throw new InternalError(‘Unexpected CloneNotSUpportedException: ‘ + e.getMessage());

}

}

類方法

下面開始寫類的方法:

/**

* Set the packet counters

* (such as when restoring from a database)

*/

protected final

void setArray(int[] r1, int[] r2, int[] r3, int[] r4)

throws IllegalArgumentException

{

//

// Ensure the arrays are of equal size

//

if (r1.length != r2.length || r1.length != r3.length || r1.length != r4.length)

throw new IllegalArgumentException(‘Arrays must be of the same size’);

System.arraycopy(r1, 0, r3, 0, r1.length);

System.arraycopy(r2, 0, r4, 0, r1.length);

}

toString 方法

無論如何,每一個類都應該定義 toString 方法:

public

String toString() {

String retval = ‘CounterSet: ‘;

for (int I = 0; I data.length(); i++) {

retval += data.bytes.toString();

retval += data.packets.toString();

}

return retval;

}

}

main 方法

如果main(String[]) 方法已經定義了, 那麼它應該寫在類的底部.

代碼編寫格式

代碼樣式

代碼應該用 unix 的格式,而不是 windows 的(比如:回車變成回車+換行)

文檔化

必須用 javadoc 來為類生成文檔。不僅因為它是標準,這也是被各種 java 編譯器都認可的方法。使用 @author 標記是不被推薦的,因為代碼不應該是被個人擁有的。

縮進

縮進應該是每行2個空格. 不要在源文件中保存Tab字元. 在使用不同的源代碼管理工具時Tab字元將因為用戶設置的不同而擴展為不同的寬度.

如果你使用 UltrEdit 作為你的 Java 源代碼編輯器的話,你可以通過如下操作來禁止保存Tab字元, 方法是通過 UltrEdit中先設定 Tab 使用的長度室2個空格,然後用 Format|Tabs to Spaces 菜單將 Tab 轉換為空格。

頁寬

頁寬應該設置為80字元. 源代碼一般不會超過這個寬度, 並導致無法完整顯示, 但這一設置也可以靈活調整. 在任何情況下, 超長的語句應該在一個逗號或者一個操作符後折行. 一條語句折行後, 應該比原來的語句再縮進2個字元.

{} 對

{} 中的語句應該單獨作為一行. 例如, 下面的第1行是錯誤的, 第2行是正確的:

if (i0) { I ++ }; // 錯誤, { 和 } 在同一行

if (i0) {

I ++

}; // 正確, { 單獨作為一行

} 語句永遠單獨作為一行.

如果 } 語句應該縮進到與其相對應的 { 那一行相對齊的位置。

括弧

左括弧和後一個字元之間不應該出現空格, 同樣, 右括弧和前一個字元之間也不應該出現空格. 下面的例子說明括弧和空格的錯誤及正確使用:

CallProc( Aparameter ); // 錯誤

CallProc(Aparameter); // 正確

不要在語句中使用無意義的括弧. 括弧只應該為達到某種目的而出現在源代碼中。下面的例子說明錯誤和正確的用法:

if ((I) = 42) { // 錯誤 – 括弧毫無意義

if (I == 42) or (J == 42) then // 正確 – 的確需要括弧

程序編寫規範

exit()

exit 除了在 main 中可以被調用外,其他的地方不應該調用。因為這樣做不給任何代碼代碼機會來截獲退出。一個類似後台服務地程序不應該因為某一個庫模塊決定了要退出就退出。

異常

申明的錯誤應該拋出一個RuntimeException或者派生的異常。

頂層的main()函數應該截獲所有的異常,並且列印(或者記錄在日誌中)在屏幕上。

垃圾收集

JAVA使用成熟的後台垃圾收集技術來代替引用計數。但是這樣會導致一個問題:你必須在使用完對象的實例以後進行清場工作。比如一個prel的程序員可能這麼寫:

{

FileOutputStream fos = new FileOutputStream(projectFile);

project.save(fos, ‘IDE Project File’);

}

除非輸出流一出作用域就關閉,非引用計數的程序語言,比如JAVA,是不能自動完成變數的清場工作的。必須象下面一樣寫:

FileOutputStream fos = new FileOutputStream(projectFile);

project.save(fos, ‘IDE Project File’);

fos.close();

Clone

下面是一種有用的方法:

implements Cloneable

public

Object clone()

{

try {

ThisClass obj = (ThisClass)super.clone();

obj.field1 = (int[])field1.clone();

obj.field2 = field2;

return obj;

} catch(CloneNotSupportedException e) {

throw new InternalError(‘Unexpected CloneNotSUpportedException: ‘ + e.getMessage());

}

}

final 類

絕對不要因為性能的原因將類定義為 final 的(除非程序的框架要求)

如果一個類還沒有準備好被繼承,最好在類文檔中註明,而不要將她定義為 final 的。這是因為沒有人可以保證會不會由於什麼原因需要繼承她。

訪問類的成員變數

大部分的類成員變數應該定義為 protected 的來防止繼承類使用他們。

注意,要用’int[] packets’,而不是’int packets[]’,後一種永遠也不要用。

public void setPackets(int[] packets) { this.packets = packets; }

CounterSet(int size)

{

this.size = size;

}

編程技巧

byte 數組轉換到 characters

為了將 byte 數組轉換到 characters,你可以這麼做:

‘Hello world!’.getBytes();

Utility 類

Utility 類(僅僅提供方法的類)應該被申明為抽象的來防止被繼承或被初始化。

初始化

下面的代碼是一種很好的初始化數組的方法:

objectArguments = new Object[] { arguments };

枚舉類型

JAVA 對枚舉的支持不好,但是下面的代碼是一種很有用的模板:

class Colour {

public static final Colour BLACK = new Colour(0, 0, 0);

public static final Colour RED = new Colour(0xFF, 0, 0);

public static final Colour GREEN = new Colour(0, 0xFF, 0);

public static final Colour BLUE = new Colour(0, 0, 0xFF);

public static final Colour WHITE = new Colour(0xFF, 0xFF, 0xFF);

}

這種技術實現了RED, GREEN, BLUE 等可以象其他語言的枚舉類型一樣使用的常量。 他們可以用 == 操作符來比較。

但是這樣使用有一個缺陷:如果一個用戶用這樣的方法來創建顏色 BLACK

new Colour(0,0,0)

那麼這就是另外一個對象,==操作符就會產生錯誤。她的 equal() 方法仍然有效。由於這個原因,這個技術的缺陷最好註明在文檔中,或者只在自己的包中使用。

Swing

避免使用 AWT 組件

混合使用 AWT 和 Swing 組件

如果要將 AWT 組件和 Swing 組件混合起來使用的話,請小心使用。實際上,盡量不要將他們混合起來使用。

滾動的 AWT 組件

AWT 組件絕對不要用 JscrollPane 類來實現滾動。滾動 AWT 組件的時候一定要用 AWT ScrollPane 組件來實現。

避免在 InternalFrame 組件中使用 AWT 組件

盡量不要這麼做,要不然會出現不可預料的後果。

Z-Order 問題

AWT 組件總是顯示在 Swing 組件之上。當使用包含 AWT 組件的 POP-UP 菜單的時候要小心,盡量不要這樣使用。

調試

調試在軟體開發中是一個很重要的部分,存在軟體生命周期的各個部分中。調試能夠用配置開、關是最基本的。

很常用的一種調試方法就是用一個 PrintStream 類成員,在沒有定義調試流的時候就為 null,類要定義一個 debug 方法來設置調試用的流。

性能

在寫代碼的時候,從頭至尾都應該考慮性能問題。這不是說時間都應該浪費在優化代碼上,而是我們時刻應該提醒自己要注意代碼的效率。比如:如果沒有時間來實現一個高效的演算法,那麼我們應該在文檔中記錄下來,以便在以後有空的時候再來實現她。

不是所有的人都同意在寫代碼的時候應該優化性能這個觀點的,他們認為性能優化的問題應該在項目的後期再去考慮,也就是在程序的輪廓已經實現了以後。

不必要的對象構造

不要在循環中構造和釋放對象

java該怎麼自學?

在學java一定要問問自己喜歡嗎?只要喜歡一切沒問題,這是我的建議:多敲代碼,多敲代碼,多敲代碼,重要的事情說三遍

學習Java決不能聽完敲一遍就過,一定要多敲幾遍,第一遍可以跟著老師的思路,後面一定要有自己的思路,慢慢培養自己的編程思想和實現功能的邏輯。甚至可以自己給自己出題,完全靠自己實現一些有意思的小功能,對提升自己的能力和代碼熟練度都有不小的幫助。

多看視頻,多練習,主要是練習一些演算法的運用,建議下載一些編程練習題,一道一道弄通弄懂。經常做筆記,用記事本把一些經典問題保存下來,以備複習。

如果是零基礎的話,就看視頻,b站上高旗老師講得不錯,每看到視頻出現一段代碼就馬上在電腦上給他跑出來,不要直接拿源碼光碟來複制,不要把視頻看完半段了才開始敲代碼。這樣幾天後你會找到一些感覺,然後沒事就想些代碼來寫寫,比如想下怎樣把名字轉換成亂碼,然後再用另一個方法轉換回來,模擬步話機發送幾條消息什麼的。這樣下去不出3月你定牛逼,這時再把教材拿出來仔細看每一句話,掌握原理。

希望你早日學成,有苦惱一起討論一下。

java基礎都有那些?

一、標識符

java對各種變數、方法和類等要素命名時使用的字元序列成為標識符;通俗點,凡是自己可以起名字的地方都叫標識符,都遵守標識符的規則

1.標識符命名規則:

1)標識符由字元、下劃線、美元符或數字組成。

2)標識符應以字元、下劃線、美元符開頭

3)java標識符大小寫敏感,長度無限制

4)約定俗成,java標識符選取應該注意「見名知意」且不能與java語言的關鍵字(eclipes中帶顏色的基本都是關鍵字)重名

二、關鍵字

java中一些賦以特定含義,用作專門用途的關鍵的字元串成為關鍵字(keyword);且大多數編輯器都會將關鍵字用特殊方式標出 所有java關鍵字都是小寫英文

一些常用關鍵字:

三、java的基本數據類型

1.java常量

java的常量值用字元串表示,區分為不同的數據類型。如:整型常量:1234實型常量:3.14字元常量:』a』邏輯常量:true、false字元串常量:」HelloWorld」

注意:

1)區分字元常量和字元串常量

字元常量是單引號引起來的單個,字元串常量是雙引號引起來的不限長度

由於java採用Unicode編碼,每個字元佔兩個位元組,因而可用天十六進位編碼形式表示,當然也可以用一個中文表示(單個中文佔用兩個位元組)

2)」常量」這個名次還會用在另外其他語境中表示值不可變的變數

2.java變數

java變數是程序中最基本的存儲單元,其要素包括變數名,變數類型和作用域。java程序中每一個變數都屬於特定的數據類型,在使用前必需對其進行聲明,聲明格式為:type varName [=value]例如:int i =100;foloat f=12.3f;double d1,d2,d3=0.123;(聲明了三個變數,其中d1,d2是默認值,d3=0.123)String s=」hello」

從本質上講,變數其實是內存中的一小塊區域,使用變數名來訪問這塊區域,因此,每一個變數使用前必需先聲明,然後必需進行賦值,才能使用。

1)java變數分類

按被聲明的位置劃分:

局部變數:方法或語句塊內部定義的變數,只能在被定義的方法或語句塊內使用

成員變數:方法外部、類的內部定義的變數,可以在整個類中使用,包括類里的方法或語句塊內也可以使用

注意:類外面是不能有變數的聲明的

按所屬的數據類型劃分:

基本數據類型變數

引用數據類型變數

四、運算符

java語言支持如下運算符:

算術運算符:+ – * / % ++ —

關係運算符: = = == !=

邏輯運算符:! | ^ ||

位運算符: | ^ ~

賦值運算符:=

拓展賦值運算符:+ = -= *= /=

字元串鏈接運算符:+

三目條件運算符 ? :

1.算數運算符

注意:

1)

位運算符中的!、、|、^跟羅技運算符相同,只是位運算符是對變數的二進位進行操作,我個人是用不到的,所以不在這裡多做介紹

2)

++(—)

在前時先運算再取值

在後時先取值再運算

2.邏輯運算符

例如:

3.擴展賦值運算符

4.字元串連接符

「 + 」運算符兩側的操作數中只要有一個是字元串類型,系統會自動將另一個操作數轉換為字元串然後進行連接,例如:

4 + 5 = 94 + 「ab」 = 「4ab」

5.三目條件運算符

語法格式: x ? y : z 其中x為boolean類型表達式,先計算x的值,若為true,則整個三目運算的結果為表達式y的值,否則整個運算結果為表達式z的值。

五、表達式和語句

1.表達式

表達式是符合一定語法規則的運算符和操作數的序列,例如:a5.0 + a(a – b) * c – 4i 30 i %10 !=0

1)表達式的類型和值

表達式中的操作數進行運算得到的結果稱為表達式的值

表達式值的數據類型即為表達式的類型

2)表達式的運算順序

應按照運算符的優先順序從高到低的順序進行

優先順序相同的運算符按照實現約定的結合方式進行

我個人覺得運算順序這塊是可以忽略的,首先我的邏輯思維能力不是特彆強,另外我的記性也不是特別好,所以如果我需要在表達式中區分優先順序的話我會選擇加括弧。但是我覺得對於一些比較複雜且關鍵的邏輯運算,如果個人邏輯運算能力加記憶都比較好可以保證不出錯的話,善用羅技運算符優先順序未嘗不是一種不讓別人看懂你代碼copy的手段。算是一種小小的防護吧,反正我這種人是不會去嘗試分析這種代碼的,太累

2.分支(條件)語句

ifif  … elseif  … else if … else ifif  … else if … else  if …else

switch () {case xx:

……………case xx:

……………default:

……………}

1.java中switch語句只能探測int類型的值(char類型的值也可以,因為他可以轉換城int類型)

2.小心case穿透,所以最好與break連用

3.多個case可以連用,如下的示例代碼也可以這樣寫(當i=1,2,18都會輸出18):

3.循環語句

for(…;…;…){……}while(…){……}先判斷再執行大括弧裡面的內容,然後再判斷是否要繼續執行do{……} whille(…); 先執行大括弧裡面的內容再判斷是否要繼續執行

4.break continue語句

break語句用於終止某個語句塊的執行。用在循環體語句中么可以強行退出循環continue語句用在循環體語句中,用於終止某次循環過程,跳過循環中continue語句下面未執行的循環,開始下一次循環過程

八、方法

java的方法類似於其他語言的函數,是一段用來完成特定功能的代碼片段,聲明格式:[修飾符1  修飾符2  …] 返回值類型  方法名  (形式參數列表)  {

java語句}

形式參數:在方法被調用時用於接受外界輸入的數據

實參:調用方法時實際純給方法的數據

返回值:方法在執行完畢後返回給調用他的環境的數據

返回值類型:實現約定的返回值的數據類型,如無返回值,必需給出返回值類型void

java語言中調用方法:對象名.方法名(實參列表)

實參的數目、數據類型和次序必需和所調用方法聲明的形參列表匹配

return語句終止方法的運行並指定要返回的數據

java中進行函數調用傳遞參數時,遵循值傳遞的原則:

基本類型傳遞的是該數據值本身,引用累心美國傳遞的是對對象的引用,而不是對象本身

例子中的方法1,前面定義的數據類型為void, 所以方法中不能有return返回值,方法4中因為有return返回值,所以前面必需定義為返回值的類型,也就是m4前面那個int

九、遞歸調用

遞歸調用是指在方法執行過程中出現該方法本身的調用

先看一個例子,這是一個簡單的遞歸調用:

簡單分析下:

1.首先main主方法中輸出字元串,內容是test方法當參數等於5的時候的返回值2.然後將參數5傳入test方法,返回值是:5 * test(4)3.再次將參數4傳入test方法中,返回值是:4 * test(3)4.再將參數3傳入test方法中,返回值是:3 * test(2)5.再講參數2傳入test方法中:返回值是:2 * test(1)6.再將參數1傳入到方法中:返回值是:1然後程序開始往回走,返回值傳入test(1)中得到2*1再往回走,將剛剛得到的2*1傳入到test(2)中得到3*2*1還要往回走,將剛剛得到的3*2*1傳入到test(3)中得到4*3*2*1還要往回走,將剛剛得到的4*3*2*1傳入到test(4)中也就是test(5)的返回值,得到5*4*3*2*1最後將test5的返回值傳入到我們的主方法輸出於語句中5*4*3*2*1=120,那麼我們的輸出語句輸出的應該為120

這就是簡單的遞歸調用的例子了

再來看一個例子:

非遞歸的寫法:

請自行領悟

最後奉上java基礎語法完整學習路線圖,除此之外還有精心整理的其他java學習路線圖,學習書籍電子書,阿里巴巴手冊,視頻教程等即可點此領取:

JAVA的基礎知識

21.請描述一下JSP中forward與include的區別與聯繫

答: forward 是跳轉A變成B.include是包含,A包含B.A變成B時,B會無法應用A中的屬性方法等.A包含B時,B可以應用A中的屬性方法等.(A與B指代”JSP頁面”).

22. 請描述一下Cookie與Session的關係, 並請解釋一下如何實現Session的持久化?

答:Cookie與Session 都是用來存數據的(…呵呵)Cookie是存在用戶這一端而Session 是存在伺服器這一端.

如果用戶這端允許Cookie功能並指定Cookie的生命周期則Cookie可在周期內保存.Session則伺服器關閉或者Session被關閉時(比如用戶登出後Session自動銷毀等等情況)數據就消失.

Session的持久化

1.用Cookie來保存.

2.用資料庫來保存.

3.配置conf/xml.

23. 請描述一下解析XML有哪些方法?請分別解釋一下DTD和XML Schema以及二者之間的聯繫與區別?什麼是XSL、XSLT、XPath?

答:主要有 dom解析 和 sax解析.DTD和XML Schema 都是實現對XML文件的約束(XML文件格式規則).DTD用來說明XML文檔格式,Schema用來說明數據文件格式。XSL、XSLT、XPath三者都是基於XML的語言.

24. 請描述一下WSDL 、UDDI、SOAP的含義及關係

答:WSDL是網頁服務描述語言.UDDI是統一描述、發現和集成協議.SOAP是簡單對象訪問協議.

簡單的說就是上面三者都是讓各種系統與各種系統之間更容易的交換信息\理解信息.

25. 請解釋以下名詞: SOA 、ESB 、JCA、SDO

答:SOA 是面向服務的架構.ESB是企業服務匯流排.JCA是J2EE平台上連接傳統系統的一個技術規範.SDO是SOA的一個規範.

PS:還不快快給分!

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/287449.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 13:07
下一篇 2024-12-23 13:07

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29

發表回復

登錄後才能評論