如何閱讀java,如何閱讀一本書在線閱讀

本文目錄一覽:

北大青鳥java培訓:提高代碼閱讀能力的技巧有哪些?

對於學習軟體開發的人來說,學會閱讀源代碼是非常重要的,然而很多人並不具備閱讀源代碼的能力。

很多人不喜歡閱讀源代碼,認為這是非常無聊的事情。

如果不會閱讀源代碼,對於後面寫代碼是非常困難的,很多開發人員主要把重心放在寫代碼上,反而忽略代碼的閱讀。

閱讀代碼是非常關鍵的,下面甘肅電腦培訓為大家介紹閱讀代碼的技巧。

1、學會運行代碼運行代碼是閱讀代碼的第一步,這樣能夠了解關於項目的很多細節,並且了解怎麼進行運行,掌握庫的使用方法。

這樣是了解一個項目最好的方法,如果能夠自己了解和編寫相關的項目,這樣對於使用框架和庫會有自己的想法。

2、找到高層次的邏輯當您開始閱讀項目的代碼時,會涉及到每個細節。

相反的,你還需要掌握高層次結構,從這個地方找到入口點,在很多大型項目開發中都可以使用這種方法。

如果是進行web程序開發,那麼甘肅IT培訓建議應該查看不同的包,例如存儲業務邏輯的位置,存儲UI代碼的位置,控制器所在的位置等等。

3、了解和使用工具很多工具都可以有助於源代碼閱讀,並且對可視化代碼有很大的幫助。

在使用過程中,甘肅IT培訓認為IntelliJIdea工具能夠導航源代碼,允許使用單詞的一部分,甚至單詞的縮寫進行搜索。

您還應該學習鍵盤的快捷鍵。

使用滑鼠導航源代碼可能會非常無聊和緩慢,鍵盤快捷鍵可以更快的進行跳轉。

4、了解語言更深入地了解特定語言有助於提高您的代碼閱讀技能。

每種語言都有自己的約定,樣式和語法。

這些知識可以幫助您快速熟悉特定代碼。

其中甘肅電腦培訓發現在Java語言中,方法名稱以小寫字母開頭,而在C#語言中,方法名稱以大寫字母開頭。

了解這種差異可以幫助你從源代碼中找到識別方法。

JAVA如何閱讀代碼更高效?

個人經驗,

讀文件有4種方法,

1 按行讀

2 按規定大小位元組讀

3 按流讀

4 隨機讀取文件

我認為第3種是最好的,而且他是通吃的,

下面是我從網上找來的,你看看有用嗎?

====================================

前兩天用到讀寫文件的操作,上網搜了一些這方面的資料。很有用的。

java中多種方式讀文件

一、多種方式讀文件內容。

1、按位元組讀取文件內容

2、按字元讀取文件內容

3、按行讀取文件內容

4、隨機讀取文件內容

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.RandomAccessFile;

import java.io.Reader;

public class ReadFromFile {

/**

* 以位元組為單位讀取文件,常用於讀二進位文件,如圖片、聲音、影像等文件。

* @param fileName 文件的名

*/

public static void readFileByBytes(String fileName){

File file = new File(fileName);

InputStream in = null;

try {

System.out.println(“以位元組為單位讀取文件內容,一次讀一個位元組:”);

// 一次讀一個位元組

in = new FileInputStream(file);

int tempbyte;

while((tempbyte=in.read()) != -1){

System.out.write(tempbyte);

}

in.close();

} catch (IOException e) {

e.printStackTrace();

return;

}

try {

System.out.println(“以位元組為單位讀取文件內容,一次讀多個位元組:”);

//一次讀多個位元組

byte[] tempbytes = new byte[100];

int byteread = 0;

in = new FileInputStream(fileName);

ReadFromFile.showAvailableBytes(in);

//讀入多個位元組到位元組數組中,byteread為一次讀入的位元組數

while ((byteread = in.read(tempbytes)) != -1){

System.out.write(tempbytes, 0, byteread);

}

} catch (Exception e1) {

e1.printStackTrace();

} finally {

if (in != null){

try {

in.close();

} catch (IOException e1) {

}

}

}

}

/**

* 以字元為單位讀取文件,常用於讀文本,數字等類型的文件

* @param fileName 文件名

*/

public static void readFileByChars(String fileName){

File file = new File(fileName);

Reader reader = null;

try {

System.out.println(“以字元為單位讀取文件內容,一次讀一個位元組:”);

// 一次讀一個字元

reader = new InputStreamReader(new FileInputStream(file));

int tempchar;

while ((tempchar = reader.read()) != -1){

//對於windows下,rn這兩個字元在一起時,表示一個換行。

//但如果這兩個字元分開顯示時,會換兩次行。

//因此,屏蔽掉r,或者屏蔽n。否則,將會多出很多空行。

if (((char)tempchar) != ‘r’){

System.out.print((char)tempchar);

}

}

reader.close();

} catch (Exception e) {

e.printStackTrace();

}

try {

System.out.println(“以字元為單位讀取文件內容,一次讀多個位元組:”);

//一次讀多個字元

char[] tempchars = new char[30];

int charread = 0;

reader = new InputStreamReader(new FileInputStream(fileName));

//讀入多個字元到字元數組中,charread為一次讀取字元數

while ((charread = reader.read(tempchars))!=-1){

//同樣屏蔽掉r不顯示

if ((charread == tempchars.length)(tempchars[tempchars.length-1] != ‘r’)){

System.out.print(tempchars);

}else{

for (int i=0; icharread; i++){

if(tempchars[i] == ‘r’){

continue;

}else{

System.out.print(tempchars[i]);

}

}

}

}

} catch (Exception e1) {

e1.printStackTrace();

}finally {

if (reader != null){

try {

reader.close();

} catch (IOException e1) {

}

}

}

}

/**

* 以行為單位讀取文件,常用於讀面向行的格式化文件

* @param fileName 文件名

*/

public static void readFileByLines(String fileName){

File file = new File(fileName);

BufferedReader reader = null;

try {

System.out.println(“以行為單位讀取文件內容,一次讀一整行:”);

reader = new BufferedReader(new FileReader(file));

String tempString = null;

int line = 1;

//一次讀入一行,直到讀入null為文件結束

while ((tempString = reader.readLine()) != null){

//顯示行號

System.out.println(“line ” + line + “: ” + tempString);

line++;

}

reader.close();

} catch (IOException e) {

e.printStackTrace();

} finally {

if (reader != null){

try {

reader.close();

} catch (IOException e1) {

}

}

}

}

/**

* 隨機讀取文件內容

* @param fileName 文件名

*/

public static void readFileByRandomAccess(String fileName){

RandomAccessFile randomFile = null;

try {

System.out.println(“隨機讀取一段文件內容:”);

// 打開一個隨機訪問文件流,按只讀方式

randomFile = new RandomAccessFile(fileName, “r”);

// 文件長度,位元組數

long fileLength = randomFile.length();

// 讀文件的起始位置

int beginIndex = (fileLength 4) ? 4 : 0;

//將讀文件的開始位置移到beginIndex位置。

randomFile.seek(beginIndex);

byte[] bytes = new byte[10];

int byteread = 0;

//一次讀10個位元組,如果文件內容不足10個位元組,則讀剩下的位元組。

//將一次讀取的位元組數賦給byteread

while ((byteread = randomFile.read(bytes)) != -1){

System.out.write(bytes, 0, byteread);

}

} catch (IOException e){

e.printStackTrace();

} finally {

if (randomFile != null){

try {

randomFile.close();

} catch (IOException e1) {

}

}

}

}

/**

* 顯示輸入流中還剩的位元組數

* @param in

*/

private static void showAvailableBytes(InputStream in){

try {

System.out.println(“當前位元組輸入流中的位元組數為:” + in.available());

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

String fileName = “C:/temp/newTemp.txt”;

ReadFromFile.readFileByBytes(fileName);

ReadFromFile.readFileByChars(fileName);

ReadFromFile.readFileByLines(fileName);

ReadFromFile.readFileByRandomAccess(fileName);

}

}

二、將內容追加到文件尾部

import java.io.FileWriter;

import java.io.IOException;

import java.io.RandomAccessFile;

/**

* 將內容追加到文件尾部

*/

public class AppendToFile {

/**

* A方法追加文件:使用RandomAccessFile

* @param fileName 文件名

* @param content 追加的內容

*/

public static void appendMethodA(String fileName,String content){

try {

// 打開一個隨機訪問文件流,按讀寫方式

RandomAccessFile randomFile = new RandomAccessFile(fileName, “rw”);

// 文件長度,位元組數

long fileLength = randomFile.length();

//將寫文件指針移到文件尾。

randomFile.seek(fileLength);

randomFile.writeBytes(content);

randomFile.close();

} catch (IOException e){

e.printStackTrace();

}

}

/**

* B方法追加文件:使用FileWriter

* @param fileName

* @param content

*/

public static void appendMethodB(String fileName, String content){

try {

//打開一個寫文件器,構造函數中的第二個參數true表示以追加形式寫文件

FileWriter writer = new FileWriter(fileName, true);

writer.write(content);

writer.close();

} catch (IOException e) {

e.printStackTrace();

}

}

public static void main(String[] args) {

String fileName = “C:/temp/newTemp.txt”;

String content = “new append!”;

//按方法A追加文件

AppendToFile.appendMethodA(fileName, content);

AppendToFile.appendMethodA(fileName, “append end. n”);

//顯示文件內容

ReadFromFile.readFileByLines(fileName);

//按方法B追加文件

AppendToFile.appendMethodB(fileName, content);

AppendToFile.appendMethodB(fileName, “append end. n”);

//顯示文件內容

ReadFromFile.readFileByLines(fileName);

}

}

———————————————————————————————————————————————–

寫入文件

try{

FileWriter fw=new FileWriter(SystemConfig.getRealPath()+”WEB-INF/url.txt”);

fw.write(“movie”+name);

fw.close();

}catch(IOException e){

e.printStackTrace();

}

讀文件中內容

try{

FileReader fr = null;

fr = new FileReader(SystemConfig.getRealPath()+”WEB-INF/url.txt”);

BufferedReader br=new BufferedReader(fr);

String Line = null;

Line = br.readLine();

while(Line!=null){

s=Line;

Line=null;

br.close();

fr.close();

}

}catch(IOException e1){

e1.printStackTrace();

}

上傳文件

try {

InputStream stream = getUpFile().getInputStream();//把文件讀入

OutputStream bos = new FileOutputStream(filePath + “movie” +name);//建立一個上傳文件的輸出流

int bytesRead = 0;

byte[] buffer = new byte[1026];

while ( (bytesRead = stream.read(buffer, 0, 1026)) != -1) {

bos.write(buffer, 0, bytesRead);//將文件寫入伺服器

}

bos.close();

stream.close();

}catch(Exception e){

System.err.print(e);

}

如何閱讀一個Java項

1、最好了解UML語言;

2、了解代碼大致結構,再根據模塊詳細去看,效果會好一些。

3、每天敲上1千行。。就可以了。。。習慣了就好了。。。慢慢來。。。

比如說 你看書看累了 寫個小程序放鬆下(一般別人是玩遊戲放鬆)- -這樣你就可以了解你要看的代碼的功能和所用的框架技術,這樣在熟悉的基礎上就能得心應手了。

不過,我可不相信什麼一天敲多少行的代碼,你要有目的性的敲,有目的性的敲10行比沒目的性的敲100行還有用。什麼是有目的性的就要你自己去摸索了。

最後給你提醒下,千萬不要相信什麼好的程序員要敲幾十萬行或幾百萬行的代碼,沒用,都是屁話,你要有知識進去才有用。

如果對所看的領域不熟悉,可以試著分解項目,找出真正不懂的部分,對比以前的知識儲備對比著看

先從整體著手。了解整體框架。再著眼每個細節。

4、先看整體結構,把握思路理解類的作用,然後有必要的話再琢磨細節。

5、先隨便拿本java入門書看完,書上的例子照著做完,哪怕抄,要都能理解,然後開始去找例子,先從最小的例子開始看,然後自己寫,然後自己加一些自己的想法,有了這些基礎再去看別人寫的例子,去了解別人的思想,然後轉換成自己的,慢慢的你會進步非常的神速。

6、首先要使用幫助分析代碼框架的工具,如VC中的class view。我認為這樣至少可以減少初看長代碼者的很多麻煩,方便熟悉代碼的基本框架。

然後是要帶著問題去看,藉助上述對框架的理解就比較容易能找到一些感興趣的代碼段,此時就可以細細品位了。

7、閱讀代碼起初不是件容易的事,要先選點代碼量不大且自己較能理解的代碼來練習閱讀能力。一開始就拿個LINUX內核那樣的「天書」來,我相信不是每個凡人都能輕易看懂的。

8、學習 源代碼

很是枯燥,我也看一些源代碼,特別是一個一個文件的查看,最後,我發現,要想快速了解像jdk,tomcat,hibernate這樣的源代碼,必須得藉助工具,首相從整體出發,了解整體框架,然後,在注重細節,我推薦使用Rose,powerdesign

或者source insight 都可以啊

9、先找到main函數,然後一個個接著看

10、教教你怎麼看源代碼吧

1.這是什麼項目的源代碼?

(再沒有文檔這個總是有的吧?哪怕是個代號)

2.這個項目的性質

(B/S還是C/S,用的什麼編程語言,用的行業細分,規模)

3.源代碼的規模

有多少行(其中有多少行是注釋),總共有多少個文件(每一類文件分別有多少個,每個文件是多少行)

如果是面向對象的,有多少個class,如果是面向過程的有多少個function

4.功能的詳細整理

功能列表

函數名 功能 功能描述

(沒有注釋不要緊,函數名總是有的吧,功能你認為是什麼就填什麼)

5.功能模塊之間的關係

(哪怕沒有注釋,按名稱,調用關係一定能整理清楚)

如果你把我上面列的5點搞清楚了,再來抱怨,我想應該是下面這個樣子:

如果這個代碼能夠運行,你可以先讓它運行起來,這樣直觀一些。

如果不能運行,我相信源碼一定會在某種程度上告訴你這個源碼是做什麼的,哪怕沒有任何文檔和注釋,相信我,一定比混淆後的代碼容易看懂。

還有,這些源碼調用的最基本的API都是有文檔的。

例如不知道a是做什麼的,但知道a調用了b,b調用了寫文件的api,

你可以暫時這樣理解,a做的某一件事就是調用b寫文件。

等你對這些a,b,c之間的關係了解得越來越多之後,實現原理也就基本清楚了。

也有可能代碼用了一個比較複雜的演算法,並沒有在旁邊寫上這個演算法的名字(如果有名字,肯定是一個很大的幫助),碰巧這個演算法你沒有用過,這時你可以把這段程序的步驟用文字描述出來。

怎麼看懂java代碼?

想要看到都能java代碼,需要了解編程的基礎知識,變數,表達式,程序執行結構,邏輯判斷等等。最重要是要學會如何調試代碼,慢慢練習,熟練了自然就會了。

如何學習java!

第一階段,Java SE基礎:

Java環境搭建、Java流程式控制制語句-for循環、switch選擇判斷、循環嵌套、數組拷貝、多維數組、final關鍵字、構造函數的調用、類的訪問許可權和路徑、面向對象高級特性、Java異常處理、Set,Map,List介面及介面實現類、Java線程、同步阻塞、JavaIO流、文件的操作,複製,讀寫,刪除等。

第二階段,JavaWeb:

MySQL安裝、管理、創建資料庫、MySQLUPDATE

查詢、Mysql高級操作、JDBC、JDBC資料庫連接操作,JDBC動態Sql處理、Servlet3.0 網頁重定向、Servlet3.0

新增的註解支持、AJAX、responseText屬性詳解等。

第三階段,Java高級框架-SSH:

Struts2異常處理、Struts2+Log4j集成、Struts2和JSON實例、Hibernate5、Hibernate集合映射、Hibernate組件映射、Spring4.0、SpringAOP+

AspectJ框架、Spring 與其它Web框架集成、Spring Hibernate支持等。

第四階段,Java高級框架-SSM:

SpringMVC、Spring MVC生成JSON數據、MyBatis、MyBatis 環境配置及入門、Mybatis set標籤、Mybatis trim標籤、Shiro、Shiro快速入門教程、Shiro Web應用等。

第五階段,SpringBoot+VUE全棧框架:

SpringBoot、全局異常處理、過濾器監聽器、EHCache緩存、SpringBoot Quartz定時任務、Vue、Vue.js 安裝、模板語法、計算屬性、事件處理器、Vue.js 自定義指令、Vue.js 路由等

第六階段,特色課程:

ActiveM環境搭建、生產者和消費者、消息持久化操作、RSA數字加密演算法、Codebar條形碼生成器、zxing二維碼生成器、HighCharts統計圖、Echarts統計圖、網路播放器ckplayer、嵌入式網路播放器,可以瀏覽器和移動端隨意使用

第七階段,互聯網框架的高級應用1:

分散式服務框架的理解,Dubbo架構設計詳解及其核心要點,框架運行原理分析、SpringData數據訪問、Lucene搜索引擎、Lucene的全文搜索伺服器介紹、索引建立方式、Solr海量數據搜索引擎、Socket網路通信、實現RMI遠程對象通訊、使用JMS消息服務、Kafka分散式消息系統、WebService與RestfulWS等

第八階段,互聯網框架的高級應用2:

Spring Security安全框架、實現Web應用安全控制、緩存應用與EhCache框架、OSCache與JBossCache框架、MyBatis與Hibernate緩存機制、NoSQL應用與SQL調優、MongoDB

NoSQL資料庫、Redis內存資料庫、實現RedisSession共享、SQL語句的優化、實現資料庫讀寫分離、WEB應用集群及性能優化、Maven項目管理工具、Web伺服器負載均衡、實現Nginx與Tomcat集群、使用LoadRunner測試工具、性能優化之內存調優、代碼優化與重構的方法等。

對java有興趣的小夥伴們,不妨先從java入門開始!B站上有很多的java教學視頻,從基礎到高級的都有,還挺不錯的,知識點講的很細緻,還有完整版的學習路線圖。也可以自己去看看,下載學習試試。

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
GCNX的頭像GCNX
上一篇 2024-11-01 14:06
下一篇 2024-11-01 14:06

相關推薦

  • Java JsonPath 效率優化指南

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

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

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

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

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

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

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

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

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

    編程 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
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論