Java基礎以及變量和運算符、包機制、javadoc生成

註釋、標識符、關鍵字

註釋

  • 平時咱們編寫代碼,在代碼量比較少的時候,咱們還能夠看懂本身寫的,可是當項目結構一旦複雜起來,咱們就須要用到註釋了javascript

  • 註釋並不會被執行,是給咱們寫代碼的人看的html

  • 書寫註釋是一個很是好的習慣java

  • 平時寫代碼必定要注意規範c++

  • java中註釋有三種:api

    • 單行註釋數組

      //我是一個單行註釋
      /*我也是單行註釋*/
    • 多行註釋:能夠註釋一段文本安全

      /*
      我是多行註釋
      我是多行註釋
      我是多行註釋
      我是多行註釋
      */
    • 文檔註釋oracle

      /**我是文檔註釋
      *@Description HelloWorld
      *@Author 油炸蘑菇魚
      *
      */

標識符

關鍵字

  • java全部的組成部分都須要名字。類名、變量名以及方法名都被稱爲標識符

標識符注意點

  • 全部的標識符都應該以字母(A-Z或者a-z),美圓符($),下劃線(_)做爲開頭
  • 首字母以後能夠是字母(A-Z或者a-z),美圓符($),下劃線(_)或者數字的任何字符組合
  • 不能使用關鍵字做爲變量名或者方法名
  • 標識符是大小寫敏感
  • 合法標識符舉例:
String Ahello4="yuyu";
String hello3="yuyu";
String $hello2="yuyu";
String _hello1="yuyu";
  • 非法標識符舉例:123abc,-salary,#abc
  • 可使用中文命名,但通常不建議這樣去使用,也不建議使用拼音,會有些low

數據類型

強類型語言

要求變量的使用要嚴格符合規定,全部變量都必須先定義後才能使用,如java,c++ide

一旦定義變量爲某個數據類型,若是不進行轉換則一直都是這個數據類型工具

特色:安全性高,速度低

弱類型語言

要求變量的使用能夠不符合規定,如javascript

特色:安全性低,速度快

Java的數據類型

基本類型(primitive type)

數值類型

整數類型

  • byte佔1個字節範圍:-128~127
  • short佔2個字節範圍:-32768~32767
  • int佔4個字節範圍:-2147483648~2147483647
  • long佔8個字節範圍:-9223372036854775808~9223372036854775807

浮點類型

  • float佔4個字節

  • double佔8個字節

字符類型

  • char佔1個字節
boolean類型
  • 佔1位其值只有true和false兩個
//整數
int num1=10;//最經常使用
byte num2=20;
short num3=30;
long num4=40L;//long類型要在數字後面加L

//小數:浮點數
float num5=20.1F;//float類型要在數字後面加F
double num6=3.1415926535897932384626433832795028841;

//字符
char name='A';
//字符串,String不是關鍵詞是類
//String namea11 ="yuyu";

//布爾值:是 非
boolean flag=true;
//boolean flag=false;
什麼是字節

位(bit):是計算機內部數據儲存的最小單位,11001100是一個八位二進制

字節(byte):是計算機中數據處理的基本單位,習慣上用大寫B來表示

1B(byte,字節)=8bit(位)

字符:是指計算機中使用的字母、數字、字和符號

  • 1bit表示1位
  • 1Byte表示一個字節 1B=8b
  • 1024B=1KB
  • 1024KB=1M
  • 1024M=1G

引用類型(reference type)

類、接口、數組
引用類型是對象是經過引用來操做的:棧------->堆

關於進制

//整數拓展: 進制 二進制0b 十進制 八進制0 十六進制0x
int i=10;
int i2=010;//八進制0
int i3=0x10;//十六進制0x 0~9 A~F 16

浮點數拓展

float f = 0.1f;//o.1
double d = 1.0/10;//0.1

System.out.println(f==d);//false

float d1=23212323213123132f;
float d2=d1+1;

System.out.println(d1==d2);//true

//float 有限 離散 會舍入偏差 會接近但不等於
//最好避免使用浮點數進行比較

字符拓展

char c1='a';
char c2='中';

System.out.println(c1);//a
System.out.println((int)c1);//強制轉換 97
System.out.println(c2);//中
System.out.println((int)c2);//強制轉換 20013
//全部的字符本質仍是數字
//編碼 Unicode 2字節 0~65536 

char c3='\u0061';

System.out.println(c3);//a

全部的字符本質仍是數字

轉移字符

\a 響鈴(BEL)
\b 退格(BS) ,將當前位置移到前一列
\f 換頁(FF),將當前位置移到下頁開頭
\n 換行(LF) ,將當前位置移到下一行開頭
\r 回車(CR) ,將當前位置移到本行開頭
\t 水平製表(HT) (跳到下一個TAB位置)
\v 垂直製表(VT)
\ 表明一個反斜線字符'''
\ ' 表明一個單引號(撇號)字符
\ " 表明一個雙引號字符
? 表明一個問號
\0 空字符(NUL)
\ddd 1到3位八進制數所表明的任意字符
\xhh 十六進制所表明的任意字符

類型轉換

因爲java是強類型語言,因此要進行有些運算的時候,須要用到類型轉換

運算中,不一樣的類型的數據先轉化爲同一類型,而後進行運算

強制轉換

高--低 (類型)變量名

int i=128;
byte b=(byte)i;//內存溢出

System.out.println(i);//128
System.out.println(b);//內存溢出 -128

自動轉換

低--高

int i=128;
double b=i;

System.out.println(i);//128
System.out.println(b);//128.0

注意點

  1. 不能對布爾值進行轉換
  2. 不能把對象類型轉換爲不相干的類型
  3. 再把高容量的轉換到低容量的時候,須要強制轉換
  4. 轉換的時候後可能存在內存溢出,或者精度問題
System.out.println((int)23.7);//23
System.out.println((int)-45.89f);//-45

溢出問題:

計算時先把一個數轉換爲新類型能夠避免溢出

//JDK7新特性,數字之間能夠用下劃線分割
int money=10_0000_0000;
int years=20;
int total=money*years;//-1474836480,計算的時候溢出了
long total2=money*years;//默認是int,轉換以前已經存在問題了
System.out.println(total2);//-1474836480
long total3=money*(long)years;//先把一個數轉換爲long
System.out.println(total3);//20000000000

實踐案例:

char c='a';
int d=c+1;
System.out.println(d);//98
System.out.println((char)d);//b

變量、常量

變量

變量是什麼:就是能夠變化的量

java是一種強類型語言,每一個變量度必須聲明其類型

java變量是程序中最基本的存儲單元,其要素包括變量名變量類型做用域

char c='a';
int a=1;
//不要用如下方式命名
//int a,b,c;
//int a=1,b=2,c=3;

注意事項:

  • 每一個變量都有類型,類型能夠是基本類型,也能夠是引用類型
  • 變量名必須是合法的標識符
  • 變量聲明是一條完整的語句,所以每一個聲明都必須以分號結束

變量做用域

  • 類變量:加static都是從屬於類的變量
  • 實例變量:從屬於對象(類),若是不進行初始化,這個類型的默認值都爲0或者0.0;布爾值默認是false,除了基本類型,其他的默認值都是null
  • 局部變量:必須聲明和初始化值,只在方法裏有用

public class Demo003 {
    //類變量
    static double salary =2500;

    //實例變量
    String name;
    int age;
    //main方法
    public static void main(String[] args) {
        //局部變量
        int i=10;

        //變量類型 變量名字=new Demo003();
        Demo003 demo003 = new Demo003();

        System.out.println(demo003.age);//0
        System.out.println(demo003.name);//null
    }
}

常量

  • 常量(Constant):初始化(initialize)後不能再改變的值,不會變更的值
  • 所謂常量能夠理解成一種特殊的變量,它的值被設定後,在程序運行過程當中不孕系被改變。

  • 常量名通常使用大寫字符。
public class Demo004 {
    //final爲修飾符,能夠在static前或者後,不存在前後順序
    static final double PI =3.14;
    public static void main(String[] args) {
        System.out.println(PI);//3.14
    }
}

變量的命名規範

  • 全部變量、方法、類名:見名知意
  • 類成員變量:首字母小寫和駝峯原則:monthSalary 除了第一個單詞之外,後面的單詞首字母大寫 lastName
  • 局部變量:首字母小寫和駝峯原則
  • 常量:大寫字母和下劃線:MAX_VALUE
  • 類名:首字母大寫和駝峯原則:Man,GoodMan
  • 方法名:首字母小寫和駝峯原則:run(),runRun()

運算符

java語言支持以下運算符:

  • 算術運算符:+,-,*,/,%,++,--
  • 賦值運算符:=
  • 關係運算符:>,<,>=,<=,==,!=
  • 邏輯運算符:與&&,或||,非!
  • 位運算符:&,|,^,~,>>,<<,>>>
  • 條件運算符:?,:
  • 擴展賦值運算符:+=,-=,*=,/=

二元運算

package operator;

public class Demo001 {
    public static void main(String[] args) {
        //二元運算符
        //Ctrl+D:複製當前行到下一行
        int a=10;
        int b=20;
        int c=25;
        int d=25;

        System.out.println(a+b);//30
        System.out.println(a-b);//-10
        System.out.println(a*b);//200
        System.out.println(a/b);//0
        System.out.println(a/(double)b);//0.5
    }
}

多類型運算

若是有高類型的,則結果爲高類型:

package operator;

public class Demo002 {
    public static void main(String[] args) {
        long a =123123123123123L;
        int b = 123;
        short c =10;
        byte d=8;

        System.out.println(a+b+c+d);//Long 123123123123264
        System.out.println(b+c+d);//int 141
        System.out.println(c+d);//int 18
        System.out.println((double) c+d);//double 18.0

    }
}

關係運算符運用

public class Demo003 {
    public static void main(String[] args) {
        //關係運算符返回的結果:正確,錯誤 布爾值
        int a =10;
        int b =20;

        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
    }
}

取模

//取餘 模運算
    int c = 21;

    System.out.println(c%a);//c/a      21/10=2....1

自增自減

public class Demo004 {
    public static void main(String[] args) {
        //++ -- 自增 自減 一元運算符
        int a=3;
        int b=a++;//執行完這行代碼後,先給b賦值,再自增
        //a=a+1
        System.out.println(a);//4
        //a++ a=a+1
        int c=++a;//執行完這行代碼前,先自增,再給c賦值

        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5
    }
}

數學工具類計算

//冪運算 2^3  2*2*2=8 不少運算,咱們會使用一些工具類來操做
double pow = Math.pow(3,2);
System.out.println(pow);//9.0

邏輯運算符

  • 邏輯與運算:兩個變量都爲真,結果才爲真true
  • 邏輯或運算:兩個變量有一個爲真,則結果爲真true
public class Demo005 {
    public static void main(String[] args) {
        //與(and) 或(or) 非(取反)
        boolean a=true;
        boolean b=false;

        System.out.println("a && b:"+(a&&b));//a && b:false 邏輯與運算:兩個變量都爲真,結果才爲真true
        System.out.println("a || b:"+(a||b));//a || b:true 邏輯或運算:兩個變量有一個爲真,則結果爲真true
        System.out.println("!(a && b):"+!(a&&b));//!(a && b):true 若是是真,則變爲假,若是是假,則變爲真
    }
}

短路運算

//短路運算
int c=5;
boolean d=(c<4)&&(c++<4);//由於c<4爲false,則進行短路運算,邏輯與右邊就沒有進行運算直接輸出結果

System.out.println(c);//5
System.out.println(d);//false

位運算

public class Demo006 {
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101

        A&B A與B =0000 1100 若是都有1,則寫1,取餘寫0
        A|B A或B =0011 1101 若是有1,則寫1
        A^B AB異或 =0011 0001 若是兩個位置相同爲0,不然爲1
        ~B 非A即B =1111 0010 與B取反

        2*8怎麼運算更快 = 16 =2*2*2*2
        <<左移    *2
        >>右移    /2

        0000 0000     0
        0000 0001     1
        0000 0010     2
        0000 0011     3
        0000 0100     4
        0000 1000     8
        0001 0000     16
         */

        System.out.println(2<<3);//16
    }
}

賦值運算符

public class Demo007 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        a+=b;//a = a+b 10+20
        a-=b;//a = a-b 30-20
        a*=b;//a = a*b 10*20
        a/=b;//a = a/b 200/20

        System.out.println(a);// 10
    }
}

字符串鏈接時須要注意:

//字符串鏈接符   +  ,  String
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//字符串在前面則後面的int都變爲string,若運算在前則先進行運算

條件運算符/三元運算符

// x ? y : z
//若是x==true,則結果爲y,不然結果爲z
int score =80;
String type = score <60 ?"不及格":"及格";
System.out.println(type);//及格

優先級

加()能夠進行優先運算

包機制、JavaDoc

包機制

  • 爲了更好地組織類,Java提供了包機制,用於區別類名的命名空間

  • 包語句的語法格式爲:

package pkg1[. pkg2[. pkg3...]];
  • 通常利用公司域名致使做爲包名;

你們能夠用com.本身的名字.xxx建立本身的多級包方便管理。

若是新建包發現沒法本身分紅多級包,則在齒輪中取消選擇Compact Middle Packages

爲了可以使用某一個包的成員,咱們須要在Java程序中明確導入該包。使用「import」語句可完成此功能

import package1[.package2...].(calssname|*);

就好比想要用Date,則須要導入Date包,能夠按alt+enter進行補全

注:import 必須在 package下面

import XXX.XXX.*的含義

import com.shenxiaoyu.base.*;//導入這個包下全部的類

JavaDoc

javadoc命令是用來生成本身API文檔的

java8官方API入口:英文 中文

參數信息

  • @author 做者名
  • @version 版本號
  • @since 指明須要最先使用的jdk版本
  • @param 參數名
  • @return 返回值狀況
  • @throws 異常拋出狀況

加在類上是類的註釋,加在方法上是方法的註釋

/**
 * @author shenxiaoyu
 * @version 1.0
 * @since 1.8
 */
public class Doc {
    String name;

    /**
     * @author shenxiaoyu
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

用命令生成java文檔

找到要生成文檔的文件夾,而後在路徑欄全面加上「cmd空格路徑」而後回車進入命令窗口

在命名窗口輸入javadoc -encoding UTF-8 -charset UTF-8 Doc.java

在當前文件夾下會生成一些文件,點擊index.html能夠查看文檔

用IDEA生成javadoc文檔

在工具欄中找到 Tool,而後再子菜單中找到 Generate JavaDoc

參數值爲:-encoding UTF-8 -charset UTF-8 -windowtitle "test"

這裏我點的whole project,後面的output directory是生成要生成javadoc的文件夾

最後效果:

相關文章
相關標籤/搜索