首页 > 技术文章 > Java基础语法

YYwantMore 2021-02-07 16:22 原文

Java基础语法

注释

  • 我们编写复杂代码时,为了以防忘记,所以在代码旁书写注释可以方便下一次阅读,也方便他人观看。

  • 注释不会被执行

  • java里面注释分为三种

  1. 单行注释:
//单行注释
  1. 多行注释:
/*注释内容*/

  1. 文档注释:
/**
*注释内容
*注释内容
*/

标识符

关键字

命名

  • java所有的组成部分都需要名字,类名,方法名,变量名...
  1. 所有标识符只能以字母(A-Z或a-z,美元符号($),下划线(_)开头
  2. 首字母之后可以任意字符组合
  3. 大小写敏感,大写和小写不一样的。
  4. 不建议用拼音和中文(别问,问就是规范,多用英语有好处的哦)

数据类型

  • Java是强类型语言:要求变量使用要严格符合规定,所有变量都必须先定义才能使用(为了安全性)

  • Java的数据类型分为两类

    1. 基本类型(primitive type)

      • 数值类型

        • 整数类型(byte,short,int,long)

          int num1 = 10;//最常用
          byte num2 = 20;
          short num3 = 30;
          long num4 = 40L;//long类型在后面加L区分
          
        • 浮点类型(float,double)

          float num5 = 50.1F;//Lfloat类型在数字后面加F
          double num6 = 60.2445345435;
          
        • 字符类型(char)

          char name = 'a'
          
      • Boolean类型(true,false)

        boolean falg = true;
        //boolean falg = false;
        
      • 相关拓展

      public class Demo02 {
          public static void main(String[] args) {
              //整数拓展: 进制  二进制0b   十进制   八进制0  十六进制0x
              int i1=10;
              int i2=010;//八进制0
              int i3=0x10;//十六进制0x  0~9 A~F 16
              System.out.println(i1);//10
              System.out.println(i2);//8
              System.out.println(i3);//16
      
      
              System.out.println("=======================");
      
              //浮点数拓展:
              //第一个问题
              float f1=0.1f;
              double f2=1.0/10;
      
              System.out.println(f1==f2);//结果居然为false,
      
              //第二个问题
              float f=1645454511;
              float d=f+1;
      
              System.out.println(f==d);//结果居然为true
              //总结原因:float是有限的,离散的,具有舍入误差,是大约不等于的。所以最好避免使用浮点数进行比较。
              //应该使用Bigdecimal数学工具类进行处理。
      
      
              System.out.println("============================");
              //字符拓展:
              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用于处理各种字符问题(a=97,中=20013)
              //例如:
              char c3='\u0061';//这后面这一串就是a在Unicode编码中的表现
              System.out.println(c3);//a
      
              System.out.println("============================");
              //转义字符
              // \t:表示一串空格
              // \n:表示换行
              //...(还有很多自己去查吧)
              //示例:
              System.out.println("Hello,\tWorld");//Hello,	World
      
              System.out.println("============================");
              //布尔值拓展
              boolean flag = true;
              if(flag==true){}//新手喜欢
              if(flag){}//老手(推荐)
              //上面这两个都表示判断flag的意思,if是判断语句,if里面默认判断true or false
      
              //好了,以上就是一些拓展
          }
      }
      
      
  1. 引用类型(reference typ
       

     

  2. **引用类型**(reference type)

     - 类
     - 接口
     - 数组

---

### 类型转换

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

- 运算中,不同类型的数据转化为同一类型,然后计算,分为两种。

  - 强制类型转换:(类型)变量名 高到低

  - 自动类型转换:低到高
![](https://img2020.cnblogs.com/blog/2301034/202102/2301034-20210207152659206-425353262.png)



    注意:

    1. 不能对布尔值转换
    2. 不能把对象类型转换为不相干的类型
    3. 高容量转换为低容量需要强制转换
    4. 转换的时候可能出现内存溢出,精度出现问题。

---

### 变量

- 变量就是可以变化的量

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

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

  ```Java
  type varName =value;
  //数据类型  变量名 = 值;
  //可以用逗号,隔开来声明多个同类型变量。(不建议)
  • 注意:

    • 每个变量都有类型,可以是基本类型,也可以是引用类型。
    • 每个变量名都是合法标识符(就是符合命名规范)。

  • 声明变量是一条完整语句,要以分号;结束。

变量作用域

  • 类变量:写在类里面的+static,从属于类的,随着类创建,随着类消失

  • 实例变量:类中间

  • 局部变量:方法里面的

    这是一个例子,关于三种变量的粗略应用

    public class Demo08{
        
        //类变量 static 数据类型 变量名 = 值
        static double money = 3000;
        
        
        //实例变量:从属于对象;如果不自行初始化,那么变量值为默认初始值0,null,false。
        String name;
        int age;
        
        //main方法
        public static void main(String[] args){
            
            //局部变量i;必须声明和初始化值
            int i = 10;
            
            //创建类Demo08 :变量类型 变量名字 = new Demo08
            //这里要创建类对象才能使用类变量
            Demo08 demo08 = new Demo08;
            
            //使用局部变量i
            System.out.println(i);
            
            //使用类变量money
            System.out.println(money);
        }
        
        //其他方法
        public void add(){
            
        }
    }
    

常量

常量(constant)是初始化(initialize)过后不能再改变的值!不会变动的值

  • 可以认为是特殊的变量,他的值被设置以后,在程序运行过程中不能改变

    final 常量名 = 值;
    final double PI = 3.14;
    
  • 常量名一般用大写字符

    注意:这里final和前面的static都是修饰符,顺序不分先后。


运算符

  • Java的运算符有

  • +-*/:加减乘除

  • %:取余,又叫模运算

  • ++:自增运算,例如:++a;或a++;就是a=a+1;但是++a和a++不一样。

  • --:自减运算,规则和上面一样。

  • =:赋值运算符

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

    • !=,不等于
    • ==:等于
  • &&,||,!:逻辑运算符

    • &&:且
    • ||:或
    • !:非
  • &,|,^,~,>>,<<,>>>:位运算符(以下了解)

  • ?::条件运算符或者叫三元运算符

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

优先级:用()比较好;

这里用例子来演示使用方法

public class Demo01 {
    public static void main(String[] args) {
        //定义四种类型的变量a,b,c,d用加法来作为例子
        //注意:在使用除/时,如果结果为小数,须将参与运算的变量先强制转换为double型,不然结果会错误
        long a=12345645;
        int b=254;
        short c=25;
        byte d=10;
        System.out.println(a+b+c+d);//long类型12345934
        System.out.println(b+c+d);//int 类型289
        System.out.println(c+d);// int 类型35,非long类型的整型运算结果为int型

    }
}
public class Demo02 {
    public static void main(String[] args) {
        //关系结果运算符返回值为:正确,错误 布尔值
        int a=10;
        int b=10;
        System.out.println(a>b);//false
        System.out.println(a<b);//false
        System.out.println(a!=b);//false
        System.out.println(a==b);//true
    }
}
public class Demo03 {
    public static void main(String[] args) {
        //这里用变量a自增++,来演示++的用发,--的用法相同
        int a=1;
        a++; //a++ 就是a=a+1;
        System.out.println(a);//结果为2,这里理所当然是吧
        System.out.println(a++);//结果为2,原因:a++当作一个整体在被使用时,先使用a的值,然再进行a= a+1运算
        System.out.println(a);//结果为3,原因:上面一步
        System.out.println(++a);//结果为4,原因,++a当作整体被使用时,先进行a=a+1运算,再将结果a使用。

    }
}

下面是逻辑运算的例子

  • &&,||,!:逻辑运算符
    • &&:且
    • ||:或
    • !:非
//逻辑运算符
public class Demo04 {
    public static void main(String[] args) {
        //与(and),或(or),非(取反)
        boolean a= true;
        boolean b= false;
        System.out.println(a||b);//true,true or false =true这个很明显
        System.out.println(a&&b);//false,true and false = false这个也理所当然,这里就不解释了哈
        System.out.println(a&&!b);//true,这里!b把b变成了true,所以结果为true
        System.out.println(!a||b);//false,这里原理和上面一样,自己想想嘛
        
 
        System.out.println("=====================================");//分割线
        
        //短路运算,例如上面b&&a,因为b为false,所以不会继续运行后面的&&a
        //短路运算示例
        int c=5;
        int d=6;
        System.out.println((c>6)&&(d++>5));//结果为:false;这里(c>6)是false,所以他不会进行d++运算,下面我们验证d++是否运算。
        System.out.println(d);//结果为6,即说明d++没有进行,这就是短路运算。
    }
}

位运算&,|,^,~,>>,<<的例子

public class Demo05 {
    public static void main(String[] args) {
        /*
          这里用二进制表示的AB作为示例进行位运算
          A = 1100 0011
          B = 1010 0101
          ------------------------------
          A&B = 1000 0001
          A|B = 1110 0111
          A^B = 0110 0110
          ~A = 0011 1100
          
          有一个例题:用最简单的算法计算2*8 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
          不难发现1往左边移动一位十进制数值*2,所以由此结论:
           1.<<  *2
           2.>>  /2
            
         */
        System.out.println(2<<3);//2*8=16的最简单计算方式
    }
}

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

//扩展运算赋值示例
public class Demo06 {
    public static void main(String[] args) {
        //这里拿+=和-=作为示范,其他·格式一样的
        int a=20;
        int b=10;
        a-=b;//a=a-b
        b+=a;//b=b+a
        System.out.println(a);//结果:10
        System.out.println(b);//结果:20


        System.out.println("=====================");//分隔线

        //这里讲一下字符串连接符+
        System.out.println(a+b+"");//结果:30,这里的第一个+是运算符号,
        System.out.println(""+a+b);//结果:1020,这里的+是字符串连接符,只要前面出现了字符串,运算符+需要(),不然会认为是字符串连接符
        System.out.println(""+(a+b));//结果:30,很细节是不是。

    }
}

?:示例

//三元运算符
public class Demo07 {
    public static void main(String[] args) {
        //x ? y : z
        //如果x==true,则结果为y,否则结果为z
        //这里开始上手
        int a=2;
        String result = (a<1)  ? "小于1" : "大于或等于1";//(a<1)相当于x,"小于1"为y,"大于或等于1"为z
        System.out.println(result);//打印结果:大于或等于1
    }


}

包机制

  • 为了更好的组织类,Java提供了区别类名的命名空间
  • 包语句语法格式为:
package pkg1[.pkg2[.pkg3...]] //这里的[]表示包之间的包含关系,不需要打出来。
  • 导入包

import package pkg1[.pkg2[.pkg3...]]

包的本质是文件夹

  • 命名格式:com.名字.名字(建议根据具体情况要求来搞)

JavaDoc

  • javadoc命令用来生成自己的api文档

JDK15的API

  • 这里是相关参数:

  • 下面是示例:

    //这里是类的文档注释
    /**
     * @author Yaoyao
     * @version 1.0
     */
    public class Doc {
        //这里我写一个方法的文档注释
    
        /**
         * @author Yaoyao
         * @return
         */
        public String test(){
            String name="yy";
            return name;
        }
        //总结:文档注释放在什么上面就是什么的注释
    }
    
    • 这里使用idea生成doc,首先点击Tools,选择Generate JavaDoc。

    • 像这样改一些参数和设置-encoding utf-8 -charset utf-8

    • 然后idea会用浏览器帮你打开,就成了。


个人学习记录,有问题希望指出!

推荐阅读