gussu

Java基础语法

Java基础语法

本文主要介绍Java中的一些基本语法,没学习一门基础语言,其基本语法是相当重要的,就好像建造房子一样根基一定要牢固。下面就来价绍Java中的基础语法。

1、注释、标识符、关键字

注释

/***
 * ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
 * │Esc│   │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│  ┌┐    ┌┐    ┌┐
 * └───┘   └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘  └┘    └┘    └┘
 * ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
 * │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
 * ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
 * │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │   │
 * ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
 * │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter  │               │ 4 │ 5 │ 6 │   │
 * ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤     ┌───┐     ├───┼───┼───┼───┤
 * │ Shift  │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│  Shift   │     │ ↑ │     │ 1 │ 2 │ 3 │   │
 * ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
 * │ Ctrl│    │Alt │         Space         │ Alt│    │    │Ctrl│ │ ← │ ↓ │ → │ │   0   │ . │←─┘│
 * └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
 */

————————————————
/***
 *                    _ooOoo_
 *                   o8888888o
 *                   88" . "88
 *                   (| -_- |)
 *                    O\ = /O
 *                ____/`---'\____
 *              .   ' \\| |// `.
 *               / \\||| : |||// \
 *             / _||||| -:- |||||- \
 *               | | \\\ - /// | |
 *             | \_| ''\---/'' | |
 *              \ .-\__ `-` ___/-. /
 *           ___`. .' /--.--\ `. . __
 *        ."" '< `.___\_<|>_/___.' >'"".
 *       | | : `- \`.;`\ _ /`;.`/ - ` : | |
 *         \ \ `-. \_ __\ /__ _/ .-` / /
 * ======`-.____`-.___\_____/___.-`____.-'======
 *                    `=---='
 *
 * .............................................
 *          佛祖保佑             永无BUG
 */

————————————————

平常我们编写代码的,在代码量比较少的时候还可以看得懂自己写的,但当项目结构一旦复杂起来,我们就需要用到注释了。

注释并不会被执行,是给我们写代码的人看的

书写注释是一个非常好的习惯!!!

平时写代码一定要注意规范。

关于代码上面的注释,大家可以在网上搜索有趣的代码注释,有很多有趣的注释。

Java中的注释有三种:

  • 单行注释

    • //单行注释 只能注释一行
      
  • 多行注释

    • /*多行注释*/ 可以注释多行
      
  • 文档注释

    • /**文档注释*/ 也称为JavaDOC /** */ 可以加参数
      

更改注释颜色:

File->settings->Editor->ColorScheme->java->Comments

就可以更改三种注释的颜色了。

public class Hello {
    public static void main(String[] args) {
        //单行注释  //开头
        //输出一个Hello World!
        System.out.println("Hello World!");
        /*多行注释
        我是多行注释
        */
        /**
         * 文档注释
         * @Description Hello //描述
         * @Author 作者
         **/
    }
}

标识符

关键字

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

abstract assert boolean break byte
case catch char class const
continue default do double else
enum extends final finally float
for goto if implements import
instanceof int interface long native
new package private protected public
return strictfp short static super
switch synchronized this throw throws
transient try void volatile while

这些关键字是不能用来,给变量、方法起名字的!

标识符注意点

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

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

  • 不能使用关键字作为变量名

  • 标识符是大小写敏感的,也就是严格区分大小写

  • 合法标识符举例:age、$salary、_value、__1_value

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

    • public static void main(String[] ages){
          String 王者荣耀="王者荣耀";//可以使用但不推荐
          System.out.print(王者荣耀);
      }
      
  • 可以使用中文命名,但是一般不建议这样使用,也不建议是用拼音,很low!!

2、数据类型

Java是强类型语言

​ 与之相同的还有C/C++都是强类型语言,强类型语言要求变量的使用要严格符合规定,所有的变量都必须先定义后才能使用。

强类型语言的好处就是安全性高,必须定义之后才能使用。缺点就是速度相对来说略有逊色。

public static void main(String[] ages){
    String a;
    System.out.print(a);//这样书写就会报错,提示必须给a初始化一个值
}

-----
public static void main(String[] ages){
    String a=10;//同样会报错,因为String为字符串类型,不能赋值int类型的数据。
    System.out.print(a);
}
-----
    //正确写法,数据类型要对应
public static void main(String[] ages){
    String a ="Hello World";
    System.out.print(a);
}

弱类型语言:

​ VB、JS都属于弱类型语言,它与强类型语言正好相反,速度相对较快,但是安全性稍微不足。

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

  1. 基本类型(primitive type)
  2. 引用类型(reference type)

基本类型又分为:

  • 数值类型
    • 整数类型
      • byte占一个字节范围:-128~127
      • short占两个字节范围:-32768~32767
      • int占四个字节范围:-2147483648~2147483647
      • long占八个字节范围:-9223372036854775808~9223372036854775807
    • 浮点类型
      • float占四个字节
      • double占八个字节
    • 字符类型char占两个字节
  • Boolean类型:占一位其值只有true和false两个

引用数据类型:

  • 接口
  • 数组
public static void main(String[] ages){
    //八大基本数据类型
    int num1 = 10;//最常用
    byte num2 = 10;
    short num3 = 30;
    long num4=100000L;//Long类型要在数字的后面加上L,来区分
    //小数,浮点数
    float num5 = 40.1F;//float类型也需要在数字后面加上F来与double区分,
    double num6 = 40.11;
    
    
    //字符类型
    char name = 'A';//只能写一个字符,如果写多个就会报错,一般用单引号括起来
    
    //String 不是关键字,是类
    String str = "你好!";//可以存放字符串类型
    
    //boolean 布尔值:是/非
    boolean flag = true;
    boolean flag = false;
}

如果说你不懂什么是字节,这里九好评好看看吧!

位(bit):是计算机 内部数据 存储的最小单位,11001100是一个八位二进制数。

字节(byte):是计算机中 数据处理 的基本单位,习惯上用大写B来表示,1B(byte,字节) = 8 bit(位)

字符:是指计算机中使用的字母、数字、字和符号

1bit表示1位

1Byte表示一个字节 1B = 8b。

1024B= 1KB

1024KB= 1M

1024M = 1G

拓展:

public class Dome01 {
    public static void main(String[] args) {
        //整数拓展:进制 二进制0b 十进制 八进制0 十六进制0x
        int i = 10;
        int i2 = 010;//八进制0
        int i3 = 0x10;//十六进制0x  0~9 A~F 
        System.out.println(i);
        System.out.println(i2);
        System.out.println(i3);
        //=====================================
        //浮点数扩展 银行业务如何标识?钱
        //BigDecimal 数学工具类
        //=====================================
        //float 有限 离散 舍入误差 大约 接近但不等于
        //double
        //最好完全不要使用浮点数进行比较
        //最好完全不要使用浮点数进行比较
        //最好完全不要使用浮点数进行比较
        
        float f = 0.1f;//0.1
        double d = 1.0/10;//0.1
        
         System.out.println(f==d);//输出为false
         System.out.println(f);//0.1
         System.out.println(d);//0.1
        float d1 = 23232332323232f;
        float d2 = d1 + 1;
         System.out.println(d1==d2);//true
        
        //=====================================
        //字符扩展 
        //=====================================
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);
        System.out.println((int)c1);//强制转换
        
        System.out.println(c2);
        System.out.println((int)c2);
        
        //所有的字符的本质还是数字
        //编码 Unicode 表中对应字符和数字 2字节 0-65536 Excel 最长只有 2的16次方 
        char c3='\u0061';
        System.out.println(c3);//a
        //转义字符
        //\t 制表符
        //\n 换行
        // ··· 自行查找
        String sa = new String("Hello World");
        String sb = new String("Hello World");
        System.out.println(sa==sb);//false
        
        String sc = "Hello World";
        String sd = "Hello World";
        System.out.println(sc==sd);//true
        //对象 从内存分析
        
        //布尔值扩展
        boolean flag = true;
        if(flag==true){}//if为判断条件如果的意思,后面细讲
        if(flag){}这两行代码相同
         //Less is More! 代码要精简易读
    }
}

3、类型转换

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

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

小数的优先级一定大于整数!所以float大于long

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

问题:

public class Demo05{
    public static void main(String[] ages){
        int i = 128;
        byte b = (byte)i;//强制类型转换,内存溢出
        
        //强制转换 格式(类型)变量名;
        
        System.out.println(b);//输出-128?
        //这是因为byte本身最高只能为127,赋值128后出现溢出现象
    }
}

强制类型转换

格式:(类型)变量名

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

自动类型转换

自动转换 低--高

public class Dome01{
    public static void main(String[] ages){
        int i = 128;
        double d = i;//自动类型转换 低--高
        System.out.println(d);
        /*
        注意:
        1.不能对布尔值进行转换
        2.不能把对象类型转换为不相干的类型,
        3.再把大容量转化为低容量的时候--强制转换
        4.转换的时候可能会出现内存溢出,或精度问题!
        5.
        */
        //精度问题
        System.out.println((int)23.7);//23
        System.out.println((int)-45.89);//45
        //==============================
        char c = 'a';
        int d = c+1;
        Systerm.out.println(d);//98
        Systerm.out.println((char)d);//b
    }
}

溢出问题

public class Dome02{
    public static void main(String[] ages){
        //操作比较大的数的时候,注意溢出问题
        //JDK7的新特性,数字之间可以使用下划线分割,为了更方便的观察
        int money=10_0000_0000;//下滑线并不会被输出
        System.out.println(money);
        int years = 20;
        int total = money*years;
        Systerm.out.println(total);//-1474836480,出现溢出现象,超过了int的最大数值
        //即便是在计算的时候转换为long,依然会出现错误
        long total2 = money*years;//默认是int,在转换之前已经溢出。
        //解决方案,在计算前就改变类型
        long total3 = money*((long)years);
        Systerm.out.println(total3);//正确输出
        
        //另外 在写long数据类型的时候,后缀的L尽量大写,以防认为是1/l
    }
}

4、变量、常量

变量

变量是什么:就是可以变化的量!

变量就是只内存空间的一小个位置,我们创建变量就好像在内存空间中申请了一小块位置空间,而空间中存放的东西我们是不确定的。

Java是一种强类型语言,每隔变量都必须生命其类型。

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

type varName [=value] [{,varName[=value]}];
//数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。但是不建议。

注意事项:

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型(如:String)。
  • 变量名必须是合法的标识符。
  • 变量声明是一条完整的语句,因此每一个声明都必须以分号结束。
public class Dome03{
    public static void main(String[] ages){
        //int a,b,c;不建议
        //int a=0,b=2,b=3;//这种写法程序可读性较差,建议分开来写
        String name="Hello";
        char x = 'x';
        double pi = 3.14;
    }
}

变量的作用域

  1. 类变量
    1. 要求需要加上关键词static。在方法之外,类之内
  2. 实例变量
    1. 没有关键词,在方法之外,类之内
  3. 局部变量
public class Dome03{
    //属性:变量
    static int allClicks=0;//类变量
    
    String str="Hello World";//实例变量:从属于对象;
    //如果不进行初始化,会输出这个类型的默认值
    String name;//默认值null
    int age;//默认值 0
    //布尔值默认为false
    //除了基本类型,其余的都是null
    
    //main:方法
    public static void main(String[] ages){
        int i = 0;//局部变量:必须声明和初始值
        
        //这里不需要了解很深后面会讲解。
        //变量类型 变量名字 = new Dome03();
        Dome03 dome03 = new Dome03();
        //dome03.name = "Hello";
        Sytem.out.println(dome03.name);
        
        //类变量可以直接在,本类的方法中使用
        System.out.println(allClicks);//0
    }
    
    //其他方法
    public void add(){
        //这里无法使用 i输出,需要重新定义
    }
}

常量

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

常量在定义的时候要使用关键字 final

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

final 常量名 = 值

final double PI = 3.14;

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

public class dome04{
    //修饰符,不存在先后顺序
    //final static double PI =3.14;也可以
    static final double PI =3.14;
    public static void main(String[] ages){
        System.out.println(PI);
    }
}

变量的命名规范:

  1. 所有变量、方法、类名:见名知意
  2. 类成员变量:首字母小写和驼峰原则:mouthSalary 除了第一个单词以外,后面的单词第一个字母大写
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线:MAX_VALUE
  5. 类名:首字母大写和驼峰原则:Max,GoodMan
  6. 方法名:首字母小写和驼峰原则:run(),runRun()

5、运算符

Java语言支持如下运算符:

  • 算数运算符:+,-,*,/,%,++,--
    • %取余原运算,在Java中叫做模运算
  • 赋值运算符:=
  • 关系运算符:>,<,>=,<=,==,!= instanceof
    • instanceof 到面向对象的时候,再深究
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>(了解)
  • 条件运算符:?:
    • 也叫三目运算符,后面在讲,先做了解
  • 扩展赋值运算符:+=,-=,*=,/=
//运算符 operator
public class Dome01{
    public static void main(String[] ages){
        // 二元运算符
        //IDEA中快捷键: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.5但是输出为0,这是因为数据类型为int型,会舍去小数部分,所以为0
        
        //==============================
        long a = 1212312341L;
        int b = 123;
        short c = 10;
        byte d = 8;
        System.out.println(a+b+c+d);//输出类型为long
        System.out.println(b+c+d);//输出类型为int
        System.out.println(c+d);//输出类型为int
        //类型转换:byte,short,char用运算符运算后自动转型int类型
        
        //============================
        //关系运算符,返回结果为Boolean类型
        int a = 10;
        int b = 20;
        int c = 21;
        
        //取余也叫做模运算
        System.out.println(c%a);//结果为1,余数为1
        
        System.out.println(a>b);//false
        System.out.println(a<b);//true
        System.out.println(a==b);//false
        System.out.println(a!=b);//true
        
        
        //=============================
        //++ -- 自增,自减 一元运算符
        //a++ = a = a+1 //先运算,a在加一 --相同
        //++a  //a先加1,在运算 --相同
        int a = 3;
        int b = a++; //先给B赋值,在自增
        System.out.println(a);//输出为4
        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
        //但是Java中没有幂运算,也就是没有^这个符号
        //可以是用Math数学工具类,其中包含许多数学方法可以直接使用
        double pow = Math.pow(2,3);
        System.out.println(pow);//8.0
    }
}

建议一定要多练习两次++--的操作达到数来能掌握。

剩下的几种运算符:

逻辑运算

public class Dome04{
    public static void main(String[] ages){
        //逻辑运算符 与(and) 或(or) 非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println(a&&b);//false 有假为假 ,只有连个都为真的时候才为真
        System.out.println(a||b);//true 有真为真 ,只有都为假的时候才为假
        System.out.println(!(a&&b));//true //取反,假的变成真,或者真的变成假
        
        //当a&&b判断 ,a为假,b为真,当判断出a为假之后程序就会短路,也就是不在判断b的真假,直接执行吓一跳指令。
        //验证
        int c = 5;
        boolean d = (c<<4)&&(c++<4);
        System.out.println(c);//5 //如果执行了后面的语句,c因该输出的为6
        System.out.println(d);//false
    }
}

位运算

public class Dome01{
    public static void main(String[] ages){
        /*
        A  = 0011 1100
        B  = 0000 1101
        
        A&B 按位与运算 0000 1100	有0为0
        A|B 按位或运算 0011 1101	有1为1
        A^B 按位异或运算 0011 0001 相同为0不同为1
        ~B 按位取反	 1111 0010	原来为1取反后为0,原来为0后来为1
        
        2*8 = 16 2*2*2*2
        效率极高
        <<左移	>>右移
        <<	相当于数字*2
        >>	相当于数字/2
        0000 0000
        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 Dome02{
    public static void main(String[] ages){
        int a = 10;
        int b = 20;
        
        a += b;//先当与a=a+b;
        a -= b;//相当于a=a-b;
        System.out.println(a);//30
        
        //字符串连接符 +
        System.out.println(a+b);//用作字符运算
        System.out.println(""+a+b);//输出1020
        //如果在加号前边出现""字符类型,那么将会将字符串后的,所有运算数据转化为字符串类型进行连接,前面的运算按照正常进行。
        System.out.println(a+b+"");//30
        //运算过程是从左向右
        
        //=================================
        //三元运算符//
        //必须掌握,实际开发中经常使用
        //x ? y : z
        //如果x==true,结果为y,否则结果为z
        
        int score = 80;
        String type = socre < 60? "不及格":"及格了";
        System.out.println(type);//输出及格
    }
}

6、包机制、JavaDoc

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

包的本质:就是文件夹!

包语句的语法格式为:

package pkg1[. pkg2[. pkg3...]];

一般利用公司域名倒置作为包名;例如:com.baidu.www

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

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

导入包的时候的快捷键:ALT+回车

总结:

  • 定义包用package
  • 导入包用import
  • 当一个包中有许多类,可以直接通过*通配符全部导入
    • 例如:com.baidu.www.*

推荐看完这章后,去看一下阿里巴巴开发手册!,百度搜索就行

JavaDoc

传送门:jdk帮助文档

Javadoc命令是用来生成自己API文档的

参数信息

  • @author 作者名
  • @version 版本号
  • @since 指名需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况
//加载类上面就是类的注释
/**
 * @author zhao
 * @version 1.0
 * @since 15
 *
 */
public class Dome02 {
    String name;
	//加载方法上面就是方法的注释
    /**
     * @author zhao
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

在IDEA中打开对应的类的文件夹方式:

生成自己Javadoc -API文档的方法,首先一定是在写代码的时候就已经写了文档注释:

通过命令行生成doc文档:

  1. 进入对应文档所在的文件夹
  2. 保存在路劲在cmd中打开
  3. 在cmd中输入javadoc -encoding UTF-8 -charset UTF-8 文件名.java回车即可
    1. 其中encoding为编码格式,为了使中文显示正常,不出现乱码格式
    2. charset 字符编码格式
  4. 回到对应文件夹查看即可。

通过IDEA生成Javadoc文档的方法:

  1. 说明:

    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

学习编程一定要学会,面向百度编程!!

相关文章: