Java基础

注释

  1. 单行注释

    //这是单行注释
  2. 多行注释

    /*
    1这里是多行注释
    2这里是多行注释
    3这里是多行注释
    4这里是多行注释
    */
  3. 文档注释(JavaDoc)

    /**
    * @Description:HelloWorld
    * @Author:TheBeacon
    */

标识符

Java对所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

  • 所有的标识符都应该以字母(A-Z或a-z),美元符($),或者下划线(_)开始。

  • 首字符之后可以是以字母(A-Z或a-z),美元符($),或者下划线(_)或数字的任何字符组合

不能使用关键字作为变量名或方法名。

  • 标识符是大小写敏感的。

  • 合法标识符举例:age,$salary,_value,_1_value

  • 非法标识符举例:123abc,-salary,#abc

可以使用中文命名,但是一般不建议这样去使用,也不建议使用拼音,很Low

数据类型

强类型语言:

  • 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用。

弱类型语言:

  • 不要求变量的使用要严格符合规定

Java的数据类型分为两大类:

  • 基本类型(primitive type):

  1. 数值类型:

    整数类型:byte(1),short(2),int(4),long(8)

    浮点类型:float(4),double(8)

    字符类型:char(2)

  2. boolean类型:占一位,其值只有falsetrue两个

    public class Demo01 {public static void main(String[] args) {//八大基本数据类型//整数int num1 = 10;byte num2 = 20;short num3 = 30;long num4 = 40L;//long类型要在数字后面加个L//小数:浮点数float num5 = 50.1f;//float类型要在数字后面加个fdouble num6 = 3.14159265358;//字符char name = 'A';//字符串 String不是关键字,是类String name1 = "TheBeacon";//布尔值boolean flag = true;}}

引用类型(reference type):

类,接口,数组

数据类型拓展

public class Demo02 {public static void main(String[] args) {//整数拓展:进制  二进制0b  十进制  八进制0  十六进制0xint i = 10;int j = 010;  //八进制0int k = 0x10;  //十六进制0xSystem.out.println(i);System.out.println(j);System.out.println(k);System.out.println("======================================");//===============================================//浮点数扩展 银行业务怎么表示?¥// BigDecimal  数学工具类//float 有限      离散      舍入误差    大约  接近但不等于//double//最好避免使用浮点数进行比较//最好避免使用浮点数进行比较//最好避免使用浮点数进行比较float f = 0.1f; //f:0.1double d = 1.0 / 10;//d:0.1System.out.println(f == d);//falseSystem.out.println(f);System.out.println(d);float d1 = 2323232323232232323f;float d2 = d1 + 1;System.out.println(d1 == d2);//trueSystem.out.println("======================================");//===============================================//字符拓展//===============================================char c1 = 'a';char c2 = '中';System.out.println(c1);System.out.println((int)c1);//强制转型System.out.println(c2);System.out.println((int)c2);//所有字符本质还是数字//编码 Unicode 表:97 = a 2字节 0 - 65536  Excel 2^16 = 65536// U0000 - UFFFFchar c3 = '\u0061';System.out.println(c3);//a//转义字符//\t 制表符// \n 换行//字符串 StringString sa = new String("hello world");String sb = new String("hello world");System.out.println(sa == sb);//falseString sc = "hello world";String sd = "hello world";System.out.println(sc == sd);//true//对象	从内存分析}}

类型转换

  • 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换

    低-------------------------------------高byte,short,char->int->long->float->double

    运算中,不同类型的数据先转化为同一类型,然后进行计算。

public class Demo03 {public static void main(String[] args) {int i = 128;//i: 128//强制转换 (类型)变量名 高->低byte b = (byte)i;//内存溢出System.out.println(b);// b: -128//自动转换 低->高double d = i;/*
        * 注意点:
        * 1.不能对布尔值进行转换
        * 2.不能把对象类型转换为不相干的类型
        * 3.在把高容量转换到低容量的时候,强制转换
        * 4.转换的时候可能存在内存溢出,或者精度问题!
        * */System.out.println("==================================");System.out.println((int)23.7);//23System.out.println((int)-45.62f);//-45System.out.println("==================================");char c = 'a';int d1 = c + 1;System.out.println(d1);System.out.println((char)d1);}}

在计算大数的时候注意先把类型不匹配问题解决掉。

public class Demo04 {public static void main(String[] args) {//操作比较大的数的时候,注意溢出问题//JDK7新特性,数字之间可以用下划线_分割int money = 10_0000_0000;//1000000000int years = 20;int total = money * years;System.out.println(total);//-1474836480,计算的时候溢出了long total2 = money * years;//默认是int,转换之前已经存在问题了System.out.println(total2);long total3 = money * (long)years;//先把一个数转换为longSystem.out.println(total3);//L     l和1容易分不清}}

变量

  • 变量是什么:就是可以变化的量。

  • Java是一种强类型语言,每个变量都必须声明其类型。

  • Java变量是程序中最基本的储存单元,其要素包括变量名,变量类型和 作用域

    变量作用域:

    • 类变量

    • 实例变量

    • 局部变量

      public class Demo05 {//类变量   staticstatic double salary = 2500;//属性:变量//实例变量:从属于对象;如果不进行初始化,这个类型的默认值//布尔值:默认是false//除了基本类型,其余的默认值都是nullString name;//默认为nullint age;//默认为0static {//作用域高}//main方法public static void main(String[] args) {//局部变量:必须声明和初始化int i = 10;System.out.println(i);Demo05 demo08 = new Demo05();System.out.println(demo08.name);//类变量 staticSystem.out.println(salary);}//其他方法public void add() {}}

注意事项

  • 每个变量都有类型,可以是基本类型,也可以是引用类型。
  • 变量名必须是合法标识符。
  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。

变量的命名规范

  • 所有变量、方法、类名:见名知意
  • 类成员变量:首字母小写和驼峰原则:monthSalary,lastName
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:Man,GoodMan
  • 方法名:首字母小写和驼峰原则:run(),runRun()

常量

**常量(Constant):**初始化(initialize)之后不能再改变值!不会变动的值。

final 常量名 = 值;
final double PI = 3.14;

常量名一般使用大写字符。

public class Demo06 {//static和final是修饰符,不存在先后顺序static final double PI = 3.14;public static void main(String[] args) {System.out.println(PI);}}

运算符

Java语言支持如下运算符:

  • 算术运算符:+,-,*,/,%,++,–
  • 赋值运算符:=
  • 关系运算符:>,<,<=,>=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>(了解!!!)
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=

二元运算符

package operator;public class Demo01 {public static void main(String[] args) {//二元运算符int a = 10;int b = 20;int c = 30;int d = 40;System.out.println(a + b);System.out.println(a - b);System.out.println(a * b);System.out.println(a / (double)b);//不转型为0}}

自动转型

package operator;public class Demo02 {public static void main(String[] args) {long a = 12123123123131L;int b = 123;short c = 10;byte d = 8;System.out.println(a + b + c + d);//LongSystem.out.println(b + c + d);//IntSystem.out.println((c + d));//Int}}

关系运算

package operator;public class Demo03 {public static void main(String[] args) {//关系运算返回的结果:正确,错误 布尔值int a = 10;int b = 20;int c = 21;System.out.println(c % a);// c / a    21 / 10 = 2 ···1System.out.println(a > b);System.out.println(a < b);System.out.println(a == b);System.out.println(a != b);}}

自增自减及幂运算

package operator;public class Demo04 {public static void main(String[] args) {//++    --      自增  自减  一元运算符int a = 3;int b = a++;//先给b赋值,再自增//a++ a = a + 1System.out.println(a);//4//++a a = a + 1int c = ++a;//先自增,再给c赋值System.out.println(a);//5System.out.println(b);//3System.out.println(c);//5//幂运算 2^3   2 * 2 * 2 = 8   很多运算,我们会使用一些工具类来操作double pow = Math.pow(2,3);System.out.println(pow);}}

逻辑运算符

package operator;//逻辑运算符public class Demo05 {public static void main(String[] args) {// 与(and)    或(or)   非(取反)boolean a = true;boolean b = false;System.out.println("a && b:"  + (a && b));//逻辑与运算:两个变量都为真,结果才为trueSystem.out.println("a || b:" + (a || b));//逻辑或运算:两个变量有一个为真,其结果才为trueSystem.out.println("! (a && b):" + !(a && b));//逻辑非运算:结果为真,则变为假//短路运算int c = 5;boolean d = (c < 4) && (c++ < 4);System.out.println(d);//falseSystem.out.println(c);//5}}

位运算和移位运算

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

        A & B = 0000 1100 按位与运算
        A | B = 0011 1101 按位或运算
        A ^ B = 0011 0001 按位异或运算:相同为0,不同为1
        ~B = 1111 0010 全部取反运算

        怎么算最快: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}}

+=、-=和字符串连接符

package operator;public class Demo07 {public static void main(String[] args) {int a = 10;int b = 20;a += b;//a = a + ba -= b ;//a = a - bSystem.out.println(a);//字符串连接符    +   StringSystem.out.println(a + b);//30System.out.println("" + a + b);//1020System.out.println(a + b + "");//30}}

三元运算符

package operator;//三元运算符public class Demo08 {public static void main(String[] args) {//X ? Y : Z//如果X = true,则结果为Y,否则为Zint score = 80;String type = score < 60 ? "不及格" : "及格";//必须掌握//if判断System.out.println(type);//及格}}

包机制

  • 为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。

  • 包语句的语法格式为:

    package pkg1[.pkg2[.pkg3...]];
  • 一般利用公司域名倒置作为包名;

  • 为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包。使用"import"语句可完成此功能

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

JavaDoc

  • JavaDoc命令是用来生成自己API文档的。

  • 命令:javadoc -encoding UTF-8 -charset UTF-8 Doc.java

  • 从头学Java基础篇(一)_Java

  • 参数信息

    • @author 作者名
    • @version 版本号
    • @since 指明需要最早使用的jdk版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况

使用IDEA生成JavaDoc文档

JavaDoc是一种将注释生成HTML文档的技术,生成的HTML文档类似于Java的API,易读且清晰明了。在简略介绍JavaDoc写法之后,再看一下在Intellij Idea 中如何将代码中的注释生成HTML文档。

IDEA如何配置后生成JavaDoc文档

  • one

从头学Java基础篇(一)_Java_02

  • two

从头学Java基础篇(一)_Java_03

  • 解释一哈:

  1. 选择是整个项目还是模块还是单个文件

  2. 文档输出路径

  3. Locale 选择地区,这个决定了文档的语言,中文就是zh_CN

  4. 传入JavaDoc的参数,一般这样写 -encoding UTF-8 -charset UTF-8 -windowtitle “文档HTML页面标签的标题” -link http://docs.Oracle.com/javase/7/docs/api

控制台输出:

从头学Java基础篇(一)_Java_04

这样就生成到指定位置了,找到***index.html***打开就可看到生成的文档了!