JAVA基础

一、注释

书写注释是一个非常好的习惯!平时写代码注意规范

java三种注释:单行注释、多行注释、文档注释

  • 单行注释:// 内容
  • 多行注释:/*内容 */
  • 文档注释(JavaDoc):/** 内容 */

二、标识符

关键字:public、static、void、class、int等

标识符:所有的标识符都应该以大小写字母、$或_开始(标识符是大小写敏感的,可以使用中文但不规范)

三、数据类型

基本类型(整数类型、浮点类型、字符类型、布尔类型)、引用类型

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类型要在数字后边加个F
        double num6 = 3.154854613165;
        //字符
        char name= '国';
        //字符串:String 不是关键字,是一个类
        String nameA= "荔枝";
        // 布尔值:是非
        boolean flag= true;
        boolean flag1 = false;
    }

★★★★★ String不是关键字,而是一个类

数据类型的拓展

        // 整数的拓展:   进制 二进制0b   十进制  八进制0  十六机制0x
        int i=10;
        int i2=010;
        int i3=0x10;
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);

        //浮点数的拓展:银行业务怎么表示?——使用一个类:BigDecimal 数学工具类
        // float :有限 离散 舍入误差 大约 接近但不等于
        // 最好完全使用浮点数进行比较,少用浮点数进行比较

        float a=0.1F;
        double b=1.0/10;
        System.out.println(a == b);  //输出false!!!!
        System.out.println(a); // 输出0.1
        System.out.println(b); // 输出0.1

        float d1=2313131331313f;
        float d2=d1+1;
        System.out.println(d1 == d2);//输出true!!!!!

        //字符串拓展
        char c1='a';
        char c2='中';
        System.out.println(c1);
        System.out.println((int)c1);//int强制转换,所有字符的本质还是数字,unicode编码(0-65536)
        System.out.println(c2);
        System.out.println((int)c2);

        char c3='\u0061';
        System.out.println(c3); //输出a   \u进行转义

        // 转义符
        // \t  :制表符   \n :换行
        System.out.println("Hello \n world");

        String s1=new String("Hello world");
        String s2=new String("Hello world");
        System.out.println(s1==s2);// 输出false
        String s3="Hello world";
        String s4="Hello world";
        System.out.println(s3==s4);// 输出true   此现象需要从内存的角度进行分析

        //布尔的拓展
        boolean flagA=true;
        if(flagA== true){}
        if(flagA){}  // 两行意思一样,true可省略表示,增强代码易读性

四、类型转换

数据类型的优先级:

  public static void main(String[] args) {
        int i=128;
        byte b=(byte) i;//内存溢出 byte最大值127 使用(类型名)进行强制转换
        System.out.println(i);
        System.out.println(b); // 输出-128
        // 强制转换 高-低
        // 自动转换 低-高
        double d=i;
        System.out.println(d);// 输出128 自动转换
    }

★★★★★注意点:

  • 不能对布尔类型进行转换
  • 不能把对象类型转换成不相干的类型
  • 在把高容量转换到低容量是进行强制转换,反之,直接自动转换
  • 转换过程中可能存在内存溢出,或者精度的问题!
		System.out.println((int)23.7); //输出23
        System.out.println((int)-45.89f);// 输出-45

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

        //操作比较大的数的时候,注意溢出的问题
        //JDK7新特性,数字之间可以使用下划线分割
        int money=10_0000_0000;
        int years=20;
        int total=money*years;//-1474836480 ,计算时溢出了

        long total1=money*years;//-1474836480 ,因为默认时int类型,在进行转换之前已经出现了问题
        long total2=money*(long)years;
        System.out.println(total2);//20000000000 先转换,得到正常计算

五、变量

变量的作用域

  • 类变量:加上关键字 static
  • 实例变量:在类里定义
  • 局部变量:在方法里边

常量

变量命名规范

六、运算符

public static void main(String[] args) {
        //二元运算符
        //ctrl+d:复制本行到下一行
        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/b);// 0 -结果0.5,但是int类型,转换成了0
        System.out.println(a/(double)b);//0.5
    }
   public static void main(String[] args) {
        long a = 12313213213132123L;
        int b = 123;
        short c = 10;
        byte d = 8;
        double e = 2.515;

        System.out.println(a+b+c+d);//12313213213132264  Long   如果有long类型,则结果就是long类型
        System.out.println(e+b+c+d);//143.515  double       如果有double,则结果就是double
        System.out.println(b+c+d);//141  int  没有long类型,结果都为int
        System.out.println(c+d);//18  int
    }
  public static void main(String[] args) {
        //关系运算符的返回结果:正确、错误     布尔值
        int a = 10;
        int b = 20;
        int c = 21;

        System.out.println(a>b);//false
        System.out.println(a<b);//ture
        System.out.println(a==b);//false
        System.out.println(a!=b);//ture
        System.out.println(c%a);//1  取余  模运算
    }
   public static void main(String[] args) {
        // ++ __ 自增、自减  一元运算符
        int a = 3;
        int b = a++; // a++  先赋值再自增
        //a=a+1
        System.out.println(a);
        //a=a+1
        int c = ++a; // ++a  先自增再赋值

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //幂运算  2^3 2*2*2=8  很多运算,会使用工具类实现
        double pow = Math.pow(2, 3);
        System.out.println(pow);

    }
 public static void main(String[] args) {
        //逻辑运算符  与或非
        boolean a = true;
        boolean b = false;

        System.out.println("a && b "+(a&&b)); //逻辑与运算:两个变量都为真,结果才为true
        System.out.println("a || b "+(a||b)); //逻辑或运算:两个变量有一个为真,结果就为true
        System.out.println("!(a&&b) "+(!(a&&b)));// 如果为真,则变为假;如果为假,则变为真

        // 短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);// 5 ,因为这里进行了短路运算,c<4为假,则程序就不去执行后面的条件了,直接返回false


    }
public static void main(String[] args) {
        //位运算   效率极高
        /*
        A = 0011 1100
        B = 0000 1101

        A&B = 0000 1100(上下都为1,才为1,否则为0)
        A|B = 0011 1101(上下都为0,才为0,否则为1)
        A^B = 0011 0001(上下相同则为0,上下不同则为1)
        ~B = 1111 0010(取反)

        面试题:2*8怎么运算最快?
        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 static void main(String[] args) {
        //扩展赋值运算符
        int a = 10;
        int b = 20;
        a+=b;//a=a+b
        a-=b;//a=a-b
        System.out.println(a);

        //字符串连接符 ,再+号两侧如果出现String类型,就会全部转换成string进行连接
        System.out.println(a+b);//30
        System.out.println(""+a+b);//1020 直接拼接
        System.out.println(a+b+"");//30 先计算再拼接


        //三元运算符
        // x ? y : z   如果x==true,则结果为y,否则结果为z

        int score = 80;
        String s = score < 60 ? "不及格" : "及格";
        System.out.println(s);//及格
    }

运算符的优先级

七、包机制

一般是公司域名的倒置作为包名;在类中,package在最上面

使用import进行导包;并且import放在上面,在package下面;

import com.ly.base.*——星号是通配符,可以直接导入包下的所有类;

八、JAVADoc

JavaDoc命令用于生成自己的API文档

cmd命令:javadoc -encoding UTF-8 -charset UTF-8 Doc.java 生成JavaDoc文档index.xml

package operator;
//类注释

/**
 * @author lyy
 * @version 1.0
 * @since 1.8   最早的版本
 */
public class Doc {
    String name;
    //方法注释

    /**
     * @param name
     * @return
     * @throws Exception
     * @author lyy
     */
    public String test(String name) throws Exception {

        return name;
    }
}