Java 基础

154 阅读6分钟

Java基础

示例:hello

public class hello{
    public static void main(String[] ages){
     System.out.println();   
    }
}

01注释

//单行注释
----------------------------
/* 多行注释
多行注释*/
----------------------------
/**
*文档注释
*/

02标识符和关键字

标识符

  • 关键字关键字

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

    标识符注意点

    • 所有的标识符都应该以字母;美元符或者下划线开始
    • 首字符之后可以是字母;美元符;下划线;数字的任何字符组合
    • 不能使用关键字作为变量名或方法名.
    • 标识符是大小写敏感的.
    • 可以使用中文命名,但是不建议这样使用,也不建议使用拼音.

03数据类型

强类型语言

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

弱类型语言

Java的数据类型分为两大类

  • 基本数据类型(primitive type)
  • 整数类型 byte占1个字节范围:-128127 short占2个字节范围:-3276832767 int占4个字节范围:正负21亿 long占8个字节范围
  • 浮点类型 float占4个字节 double占8个字节
  • 字符类型char占2个字节
  • boolean类型:占1位其值只有true和false两个
  • 引用数据类型(reference type)
  • 接口
  • 数组

04数据类型扩展和面试题讲解

public class Demo02{
    public static void main(String[] args) {
        //整数拓展: 进制      二进制0b     十进制      八进制0      十六进制0x
        int i =10;
        int ii =010;//八进制
        int iii =0x10;//十六进制
        System.out.println(i);
        System.out.println(ii);
        System.out.println(iii);
        System.out.println("========================");
        //======================================================
        //浮点数拓展?    银行业务怎么表示?
        //BigDecimal 数据类工具
        //float   有限   离散 舍入误差   大约  接近但不等于
        //double
        //最好完全使用浮点数进行比较

        float f = 0.1f;
        double  d = 1.0/10;
        System.out.println(f==d);
        System.out.println(f);
        System.out.println(d);

        float a=5646431646f;
        float z=a + 1;
        System.out.println(a==z);
        System.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);//强制转换
        System.out.println("====================================");

        //所有字符的本质还是数字
        //编码 Unicode 表 2字节 0 - 65536 Excel 2 16 = 65536
        // U0000 UFFFF
        char c3 = '\u0061';
        System.out.println(c3);

        //转义字符
        // \t    制表符
        // \n    换行
        System.out.println("h\nd");
        System.out.println("h\td");
        
        //布尔值扩展
        boolean flag = true;
        if (flag==true){}//新手
        if (flag){}//老手
        //代码要精简易读
    }
}

05类型转化

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

  • 运算中,不同类型的数据先转换成同一类型,然后进行运算.

  • 强制类型转化

  • 自动类型转换

    public class Demo03 {
        public static void main(String[] args) {
            int i = 128;
            byte b = (byte)i;//内存溢出
    
            //强制转换  (类型)变量名   高----低
            //自动转换      低-----高
            System.out.println(i);
            System.out.println(b);
    
            /*
            * 注意点:
            * 1.不能对布尔值进行转换
            * 2.不能把对象类型转换成不相干的类型
            * 3.在把高容量转换成低容量时,强制转换
            * 4.转换的时候可能存在内存溢出,或者精度问题!
            * */
            System.out.println("==================");
            System.out.println((int)23.7);
            System.out.println((int)-45.89f);
            System.out.println("================================");
            char c ='a';
            int d = c+1;
            System.out.println(d);
            System.out.println((char)d);
        }
    }
    
    
    public class Demo04 {
        public static void main(String[] args) {
            //操作比较大的数的时候,注意溢出问题
            //JDK特性,数字之间可以用下划线分割
            int money = 10_0000_0000;
            System.out.println(money);
            int years = 20;
            int total = money*years;//计算溢出
            long total2 = money*years;//默认是int,转换前就有问题
            long total3 = money*(long)years;//先把一个数转换为long
            System.out.println(total3);
    
        }
    }
    
    

06变量;常量;作用域

  • 变量就是可以变换的量.

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

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

    type varName [=value] [{,varName[=value]}];
    //数据类型  变量名 = 值; 可以用逗号隔开来声明多个同类型变量
    
  • 注意事项

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

变量作用域

  • 类变量

  • 实例变量

  • 局部变量

    public class Demo05 {
        //类变量 static
        static double salary = 2500;
    
    
        //属性:变量
        //实例变量:从属于对象;如果不自动初始化,这个类型默认值 0 0.0
        //布尔值:默认是false
        //除了基本类型,其余默认值都是null
        String name;
        int age;
    
        //main方法
        public static void main(String[] args) {
            //局部变量必须声明和初始化
            int i = 10;
            System.out.println(i);
    
            //变量类型   变量名 = new Demo05();
            Demo05 demo05 = new Demo05();
            System.out.println(demo05.age);
            System.out.println(demo05.name);
            //类变量 static
            System.out.println(salary);
            }
            //其他方法\
            public  void add(){
    
            }
    
        }
    

常量

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

  • 所谓常量可以理解成一种特殊的变量,他的值被设定后,在程序运行过程中不允许被改变.

  • 常量名一般使用大写字符.

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

变量的命名规范

  • 所有变量,方法,类名:见名知意
  • 类成员变量:首字母小写和驼峰原则
  • 局部变量:首字母小写和驼峰原则
  • 常量:大写字母和下划线
  • 类名:首字母大写和驼峰原则
  • 方法名:首字母小写和驼峰原则

07基本运算符

JAVA 语言支持如下预算符:

  • *算术运算符:+, -, , /, %(模运算), ++, --

  • 赋值运算符:=

  • 关系运算符:>, <, >=, <=, ==, !=instanceof

  • 逻辑运算符:&&, ||, !

  • 位运算符:&, |, ^, ~, >>, <<, >>>

  • 条件运算符 ?, :

  • 扩展赋值运算符:+=, -=, *=, /=

package operator;

import com.sun.javafx.css.CssError;

public class Demo01 {
    public static void main(String[] args) {
        // 二元运算符
        int a = 10;
        int b = 20;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);

    }
}

package operator;

public class Demo02 {
    public static void main(String[] args) {
        long a =456411561545564L;
        int b = 321;
        char c = 15;
        byte d = 7;
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+(double)d);

    }
}

package operator;

public class Demo03 {
    public static void main(String[] args) {
        // 关系运算符以boolean输出 false true
        int a=10;
        int b=21;
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
        System.out.println(b%a);//模运算
    }
}

08自增自减运算符;初始Math类

package operator;

public class Demo04 {
    public static void main(String[] args) {
        // ++:自增   --:自减 一元运算符
        int a =3;
        int b =a++;//执行完这行代码后,先赋值b,再自增
        // a++ =a+1
        System.out.println(a);
        int c =++a;//执行完这行代码后,先自增,再赋值c
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);

        //幂运算 2^3
        double pow = Math.pow(2,3);
        System.out.println(pow);

    }
}

09逻辑运算符,位运算符,条件运算符

逻辑运算

package operator;

public class Dem05 {
    public static void main(String[] args) {
        // 与(and)      或(or)         非(取反)
        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);


    }
}

位运算

package operator;

public class Demo06 {
    public static void main(String[] args) {
        /*
            A = 0011 1100
            B = 0000 1101
        -------------------------------
             A&B =0000 1100
             A/B =0011 1100
             A^B =0011 1101
              ~B =1111 0010

              效率及高
              <<    *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);

    }
}

10三元运算符及小结

扩展赋值运算符

package operator;

public class Demo07 {
    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);

        //字符串连接符  +
        System.out.println(a+b);
        System.out.println(""+a+b);
        System.out.println(a+b+"");

    }
}

三元运算符

package operator;

//三元运算符
public class Demo08 {
    public static void main(String[] args) {
        // x ? y : z
        //如果x==true,则结果为y;不是结果为z
        int score = 60;
        String type = score<80 ?"差":"优秀";//必须掌握
        // if
        System.out.println(type);
    }
}

包机制

  • 包机制相当于文件夹

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

  • 包语句语法格式

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

  • 在Java程序中导入该包

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

JavaDoc生成文档

  • javadoc命令使用来生成自己的API文件

  • 参数信息

    • @author 作者名

    • @version 版本号

    • @since 指明需要最早使用的JDK版本

    • @param 参数名

    • @return 返回值情况

    • @throws 异常抛出

      package com.Jiyuhang.www.base;
      /**
       * @author Jiyuhang
       * @version 1.0
       * @since 1.5
       */
      public class Doc {
          String name;
      
          /**
           * 
           * @param name
           * @return
           * @throws Exception
           */
          public String teat(String name) throws Exception{
              return name;
          }
      }