Java學習筆記(2)

来源:http://www.cnblogs.com/123hqb--/archive/2016/11/13/6057984.html
-Advertisement-
Play Games

有不足之處,請大家指出 一、 基礎知識 1、SDK的最新下載 搜索oracle,進入網站,à Downloads –> JavaSEI à 選第一個下載(其實java 8u111和8u112的區別就是在8u111的基礎上優化了一下,升了下級,實際使用沒什麼區別的) 其次註意一下選32位還是64位,是 ...


有不足之處,請大家指出

一、 基礎知識

1SDK的最新下載

搜索oracle,進入網站,à Downloads –> JavaSEI à 選第一個下載(其實java 8u1118u112的區別就是在8u111的基礎上優化了一下,升了下級,實際使用沒什麼區別的

 

 

其次註意一下選32還是64Liunx系統還是Windows系統,其中X86指的是32

 

最後圖中選中第一個按鈕同意,如果不選預設是第二個不同意

 

 

顯示的一般都是最新的版本,如果要下載舊版本通過搜索可以找到

 

2PATH目的

Java的環境變數有path環境變數和classpath環境變數。編譯的過程中,我們無法同時運行JDKJava的開發工具:java development kit記事本編寫java程式設置path的環境變數實際就安裝JDK的路徑,這樣,你在運行的時候就可以直接輸入你編程的程式路徑就好了,而不用輸入JDK的路徑

 

3、初學要註意的幾點:

1.在記事本編寫完程式後忘了保存

2.寫完保存好代碼後,在cmd運行時輸入路徑要輸入正確的路徑

3.編譯位元組碼文件:javac 文件名  回車

4.運行代碼: java 類名  註意這兒不是文件名

5.寫固定語句出錯,尤其是寫main函數寫錯的時候,運行時並不會報錯,因為那個還是函數,只是變成了普通函數了,一定要註意的一點

Java的源文件擴展名是.java, 位元組碼文件擴展名是.class

對於初學者,多練、多問、自己主動去調試、複習和總結是自我感覺最好的學習方法

 

4、關鍵字和標識符

1Java中的關鍵字是用來一些特殊用途的詞,Java中關鍵字嚴格區分大小寫

2、標識符是用來在程式中定義變數、類、方法等的命名符號

 

5、變數

<1、命名:使用駝峰命名法,第一個單詞的首字母大寫,其它的首字母小寫。而且變數名要見名知意。

<2、使用

 可以先聲明一個或多個變數,再賦值

 可以在聲明一個變數的時候直接賦值

 

int a1,a2,a3,a4;
a1 = 10;
int a= 10;
char c = 'a';
short s= 10

註意先聲明後使用,先賦值才能輸出

 

6Java的數據類型

<1基本數據類型常見的用intcharbooleanbyte等類型,存的是本身

<2、引用數據類型:Stringclass、數組等,存的是數據的空間地址

<3、數據類型轉換中需要註意的點

凡是short byte ,char 定義的變數,在做運算的時候數據類型都會自動轉換為int

兩個不同數據類型做運算,給過取決於大的數據類型。

 

<4、自動類型轉換

       目標類型和源文件類型要相容  int型就不能相容char型和字元串型

short s= 100;
int i = s; // 自動類型轉換
int num1 = 10;
float num2 =10.0f;//預設是double ,float就在數據後面加f

小數據轉換成大數據:目標類型要大於源類型 如int類型可以轉換成double類型,但是反過來就會出錯

 

<5、強制轉換類型

  大數據轉換成小數據:就像上述講的,自動類型轉換不能講int類型轉換成double類型,可以通過強制轉換,但是建議少用,因為可能會造成數據丟失。

 

long l = 100000L; // 長整型的需要在後面加一個L
int a = (int)l; // 強制類型轉換 ,也是通過變數前面用小

 

 

6、進位的轉換

整數常量的表現形 à進位的形式表示(二進位、八進位、十進位、十六進位

 

1、進位的認識

生活中:還有其他的進位,如星期(進位 0-6時間(十二進位 0-11))、二十四進位(0-23

電腦使用二進位來讀生活中的數據,電腦只能識別01就像開關一樣只有兩種方式

 

2、進位之間的轉換

十進位轉換成二進位:將這個數2直到商為0將餘數從下至尚連接起來就是二進位的數

 

二進位轉換成十進位:從左至右將二進位的每一位乘2 ^n-1),然後相加,就是十進位

 

八進位和十進位以及十進位和十六進位的轉換一樣的原理

 

二進位轉成八進位:

思路一:二進位à 十進位à 八進位

思路一個八進位相當於三個二進位二進位三位分割成一位

010 100 101 = 245

  第二種思路比較簡單,也就是8421最常見的BCD編碼,二進位換成十六進位,也是相同的原

一個十六進位相當於四個二進位,將二進位四位分割成一位

0000 1010 0101 = a5

十六進位的表示:1-9,10-15用A-F表示

 

 

二.運算符。

1.1算數運算符:+,-,*,/,%    

 

short s1 = 10;
short s2 = 20;
short s3 = s1 + s2; // 報錯, s1和s2做運算時會自動變為int類型
//正確的寫法:
int = s1 + s2;
short s3 = (short)(s1 + s2);   //常見錯誤題:

 

1.2自增自減 :++ --

int a = 10;
int b = a++; b =10  a =11   //++在後 先賦值後運算
int b1 = ++a; b1 =12 a =12  //++在前 先運算在賦值,減減一樣

 

1.3賦值運算符 : = +=-=*=/=

見錯誤題:

int a = 0;
a+=10; // a = a + 10;
short b = 10;
short c = 5;
b+=c;  // b = b + c  //沒有問題. 會轉成int時再自動強轉為short
//b = b+c;  //下麵這種寫法是錯誤的。

 

 

1.4關係運算符 : >,<,>=,<=,== ,!=

關係型運算符 (比較運算符) : 結果只有一種boolean類型 要麼是true(對 ,要麼是false(錯

 

如果判斷基本數據類型,比較的變數的兩個

如果是比較引用類型,比較的是引用的地址值

1.5邏輯運算符: & ,| ,! ,&& ,|| 

&& &區別和聯繫:

相同點 結果是一樣的

不同點 :如果用雙&號判斷,如果說條件一為false,不會判斷條

件二,但是單&號會繼續判斷

 

|| |

相同點 結果一樣。

不同點 如果用||號判斷,如果說條件一為true,不會判斷條

件二,但是單|號會繼續判斷

 

 

1.6位運算符:

它是對二進位位進行計算。

位運算符是可以對十進位的整數進行計算,計算方式:將十進位轉為二進位進行計算

 

二進位由01組成,所以計算的結果要麼是0,要麼是1

1位運算符的符號:

<1& () 兩者都是1的時候我就是1,其他都是0

 

 

 

int a = 6;
int b = 3;
System.out.println(a&b);   // 2
/*原理:
1111-1111 1111-1111 1111-1111 1111-0110 6 & 1111-1111 1111-1111 1111-1111 1111-0011 2
1111-1111 1111-1111 1111-1111 1111-0010 =2 */

 

 

<2|()  兩者都為0時才為0 ,其他的都是1

 

int a = 6;
int b = 3;
System.out.println(a|b);   // 7
/*
1111-1111 1111-1111 1111-1111 1111-0110  6
|
1111-1111 1111-1111 1111-1111 1111-0011  2

1111-1111 1111-1111 1111-1111 1111-0111  =7
*/

 

<3^(異或): 兩者不同為1,相同為0

 

int a = 6;
int b = 3;
System.out.println(a^b);   // 5
/*
1111-1111 1111-1111 1111-1111 1111-0110  6
^
1111-1111 1111-1111 1111-1111 1111-0011  2

1111-1111 1111-1111 1111-1111 1111-0101  =5
*/

 

 

 

<4~(取反)  0變為11變為0.

 

int a = 6;
int b = 3;
System.out.println(~a);   // -7
/*
~
1111-1111 1111-1111 1111-1111 1111-0110  6

1111-1111 1111-1111 1111-1111 1111-1001  =-7

*/

 


如圖6取反為-7,-7取反同樣是6,所以個人得出結果是
正數取反變為負數再-1,負數取反變為正數也-1

 

 

 負數的表現形式: 二進位位的最高位為1,那麼這個數就是一個負數

 

/*
1111-1111  1111-1111 1111-1111 1111-1111 : -1
0000 0000 0000 0000 0000 0000 0000 0000 : 0

-2:1111-1111  1111-1111 1111-1111 1111-1110
-3:1111-1111  1111-1111 1111-1111 1111-1101
-4:1111-1111  1111-1111 1111-1111 1111-1100
-5:1111-1111  1111-1111 1111-1111 1111-1011
-6:1111-1111  1111-1111 1111-1111 1111-1010
-7:1111-1111  1111-1111 1111-1111 1111-1001
0000-0000  0000-0000 0000-0000 0000-0111  = 7
*/

 

規律:正數取反變為負數-1

   負數取反變為正數-1

 

作用數據進行加密

如123456可以0-100 a-z26字母組成,再加上&|^~運算符的應用

24845845957512317580960  --- >123456

 

1.7移位操作符:對二進位位進行操作

1  >>  右移

2  <<  左移

3  >>> 無符號右移


右移:
        System.out.println(6>>1); // --->3  6/2  2*1
        System.out.println(6>>2); // --->1  6/4  2*2
        System.out.println(6>>3); // --->0  6/8  2*3
        System.out.println(6>>4);

        System.out.println(9>>1); // --->4   9/2  2*1
        System.out.println(9>>2); // --->2  9/4  2*2
        System.out.println(9>>3); // --->1  9/8  2*3
        System.out.println(9>>4);//  --->0  9/16    

        System.out.println(-6>>1); //  -6/2 -->-3 

規律: 右移多少位,就用需要移動的數除以2的多少次方

 

/*
左移 :
        System.out.println("-----這個是左移的結果----------");
        System.out.println(6<<1); // --->12  6*2  2*1
        System.out.println(6<<2); // --->24  6*4  2*2
        System.out.println(6<<3); // --->48  6*8  2*2*2
        System.out.println(6<<4); //---->96  6*16 2*2*2*2

        System.out.println(-6<<2);//--->-24
        
        規律: 左移多少位,就用這個數乘以2多少次方*/

 

/*
//>>>無符號的右移
        System.out.println(6>>>1); //3
        System.out.println(6>>>2); //1
System.out.println(-6>>>2); // 1073741822

原理:正數的無符號右移與普通右移原理相同
*/

 

 

作用  提高運算速率位運算是執行最快

比如: 以最快的方式計算 2*8

  2<<3  == 2*8 = 16

 

 

2.8、三元運算符

     也叫三目運算符:

     結構:

     條件?條件成立執行的結果 :條件不成立執行結果 ;

 

class Demo1 
{
    public static void main(String[] args) 
    {
        int a = 10;
        int b = 9;
        int c =  b++>=a ? a++ : b+a;  //註意這兒的b++>=a 是先執行b>=a,然後再執行b++,因為++在後先賦值在運算,這兒會經常搞錯的。然後別忘了b++,再執行b+a,所以c值是20;而不是11 / 19
        System.out.println(a);  //10
        System.out.println(b);  //10
        System.out.println(c);  //20

 

 

//需求:Java中兩個值交換的三個方法:

//1.藉助中間量
int x = 10int y = 20int temp = x; 
x = y; 
y = temp; 

//2.數值加減
int x = 10int y = 20; 
x = x + y; 
y = x - y; 
x = x - y; 

//3.位移運算交換
x = x^y;
y = x^y;
x = x^y;

//System.out.println(y^x^x);
//System.out.println(x^y^y);

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 【C#Windows 服務】 《三》Time設置 目錄: 1.【C#Windows 服務】 《一》初入門 2.【C#Windows 服務】 《二》INI配置文件 3.【C#Windows 服務】 《三》Timer設置 一、工具: VS2015+NET Framework4.5。 二、操作: 1、計時 ...
  • 一個值類型永遠不可能為null,但是當資料庫中的某列數據允許為空時,或者另一種語言中的數據類型(引用類型)對應C 的是值類型,當需要和另外的語言交互時,就有可能需要處理空值的問題。所以,CLR中引用了可空類型 。 空接合操作符 表示如果操作符左邊的數不為null就返回該操作數,否則返回右邊的操作符。 ...
  • 在通過Visual Studio創建的C 程式集中,都包含了一個AssemblyInfo.cs的文件,在這個文件中,我們常常會看到這樣的代碼 從這些代碼及他們的註釋中,我們大概知道他們是用來描述程式集的相關信息,那麼是不是我們平常寫的代碼中的類、類成員是不是也有這樣的附加信息呢?答案是肯定的。比如最 ...
  • 學習一種知識,我喜歡看看源碼是怎麼進行它們類之間的關係以及方法的調用,是怎麼實現的。這樣我才感覺踏實。 既然現在談到HandlerMapping,我們先知道HandlerMapping的作用:HandlerMapping的作用就是解析請求鏈接,然後根據請求鏈接找到執行這個請求的類(HandlerMa ...
  • 這是繼上次svn 客戶端與伺服器安裝後的如何在Eclipse 環境下線上安裝 SVN插件,我的Eclipse版本是4.50 SVN的線上安裝 下麵為大家提供SVN 的線上安裝教程。下麵是安裝的 詳細過程: 1.打開Eclipse的help的Install New Software 其中http:// ...
  • ...
  • 1、簡介 EventBus是一個Android端優化的publish/subscribe消息匯流排,簡化了應用程式內各組件間、組件與後臺線程間的通信。比如請求網路,等網路返回時通過Handler或Broadcast通知UI,兩個Fragment之間需要通過Listener通信,這些需求都可以通過Eve ...
  • 1、簡介 ButterKnife是註解中相對簡單易懂的很不錯的開源框架 1.強大的View綁定和Click事件處理功能,簡化代碼,提升開發效率 2.方便的處理Adapter里的ViewHolder綁定問題 3.運行時不會影響APP效率,使用配置方便 4.代碼清晰,可讀性強 2、下載地址 https: ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...