天天看点

2021-08-15 Java基础语法Java基础语法

Java基础语法

注释

  1. 单行注释
  2. 多行注释
    /*
    多行注释
    */
               
  3. 文档注释
    /**
    *文档注释,/**开头,* /结束,每行得加*
    *@Description Hello World
    *@Author GuYUe
    */
               
  4. 有趣的代码注释
    /***                                                                    
     *            .,,       .,:;;iiiiiiiii;;:,,.     .,,                   
     *          rGB##HS,.;iirrrrriiiiiiiiiirrrrri;,s&##MAS,                
     *         r5s;:r3AH5iiiii;;;;;;;;;;;;;;;;iiirXHGSsiih1,               
     *            .;i;;s91;;;;;;::::::::::::;;;;iS5;;;ii:                  
     *          :rsriii;;r::::::::::::::::::::::;;,;;iiirsi,               
     *       .,iri;;::::;;;;;;::,,,,,,,,,,,,,..,,;;;;;;;;iiri,,.           
     *    ,9BM&,            .,:;;:,,,,,,,,,,,hXA8:            ..,,,.       
     *   ,;&@@#r:;;;;;::::,,.   ,r,,,,,,,,,,iA@@@s,,:::;;;::,,.   .;.      
     *    :ih1iii;;;;;::::;;;;;;;:,,,,,,,,,,;i55r;;;;;;;;;iiirrrr,..       
     *   .ir;;iiiiiiiiii;;;;::::::,,,,,,,:::::,,:;;;iiiiiiiiiiiiri         
     *   iriiiiiiiiiiiiiiii;;;::::::::::::::::;;;iiiiiiiiiiiiiiiir;        
     *  ,riii;;;;;;;;;;;;;:::::::::::::::::::::::;;;;;;;;;;;;;;iiir.       
     *  iri;;;::::,,,,,,,,,,:::::::::::::::::::::::::,::,,::::;;iir:       
     * .rii;;::::,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,::::;;iri       
     * ,rii;;;::,,,,,,,,,,,,,:::::::::::,:::::,,,,,,,,,,,,,:::;;;iir.      
     * ,rii;;i::,,,,,,,,,,,,,:::::::::::::::::,,,,,,,,,,,,,,::i;;iir.      
     * ,rii;;r::,,,,,,,,,,,,,:,:::::,:,:::::::,,,,,,,,,,,,,::;r;;iir.      
     * .rii;;rr,:,,,,,,,,,,,,,,:::::::::::::::,,,,,,,,,,,,,:,si;;iri       
     *  ;rii;:1i,,,,,,,,,,,,,,,,,,:::::::::,,,,,,,,,,,,,,,:,ss:;iir:       
     *  .rii;;;5r,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,sh:;;iri        
     *   ;rii;:;51,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.:hh:;;iir,        
     *    irii;::hSr,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,sSs:;;iir:         
     *     irii;;:iSSs:.,,,,,,,,,,,,,,,,,,,,,,,,,,,..:135;:;;iir:          
     *      ;rii;;:,r535r:...,,,,,,,,,,,,,,,,,,..,;sS35i,;;iirr:           
     *       :rrii;;:,;1S3Shs;:,............,:is533Ss:,;;;iiri,            
     *        .;rrii;;;:,;rhS393S55hh11hh5S3393Shr:,:;;;iirr:              
     *          .;rriii;;;::,:;is1h555555h1si;:,::;;;iirri:.               
     *            .:irrrii;;;;;:::,,,,,,,,:::;;;;iiirrr;,                  
     *               .:irrrriiiiii;;;;;;;;iiiiiirrrr;,.                    
     *                  .,:;iirrrrrrrrrrrrrrrrri;:.                        
     *                        ..,:::;;;;:::,,.                             
     */                                                                     
               

标识符

关键字

  1. 访问控制
    关键字 意思
    private 私有的
    protected 受保护的
    public 公共的
  2. 类、方法和变量修饰符
    关键字 意思
    abstract 声明抽象
    class
    extends 扩允,继承
    final 终极,不可改变的
    implements 实现
    interface 接口
    native 本地
    new 新,创建
    static 静态
    strictfp 严格,精准
    synchronized 线程,同步
    transient 短暂
    volatile 易失
  3. 程序控制语句
    关键字 意思
    break 跳出循环
    continue 继续
    return 返回
    do 运行
    while 循环
    if 如果
    else 反之
    for 循环
    instance of 实例
    switch 开关
    case 返回开关里的结果
    default 默认
  4. 错误处理
    关键字 意思
    catch 处理异常
    finally 有没有异常都执行
    throw 抛出一个异常对象
    throws 声明一个异常可能被抛出
    try 捕获异常
  5. 包相关
    关键字 意思
    import 引入
    package
  6. 基本类型
    关键字 意思
    boolean 布尔型
    byte 字节型
    char 字符型
    double 双精度
    float 浮点
    int 整型
    long 长整型
    short 短整型
    null
    true
    false
  7. 变量引用
    关键字 意思
    super 父类,超类
    this 本类
    void 无返回值

标识符注意点

  • 标识符应以大小写字母(A-Z,a-z),美元($),下划线(_)开始。
  • 首字母之后可以是任意字母,数字的任何字符组合。
  • 不能以关键字命名
  • 大小写敏感
  • 中文可以用,但不建议

数据类型

Java是一种强类型语言,所有变量都得先定义后使用。

基本类型

  1. 整数:byte占1个字节范围:-128-127;
    一个字节,8位,最大是二进制11111111,表示成10进制是2e8=256,分正负,-128-127

    ​ short占2个字节范围:-32768-32767,

    ​ int占4个字节范围:-2147483648-2147483647,±21亿

    ​ long占8个字节范围:-9223372036854775808-9223372036854775807

    ​ long一般在数字后加L,表示L类型

  2. 浮点:float占4个字节,1.4e-045〜3.4e + 038

    ​ double占8个字节,4.9e-324〜1.8e + 308

  3. 字符:char占两个字节,字符用单引号,一个汉字也是一个字符

    字符串:String,String不是关键字,是一个类,字符串用双引号

  4. 布尔类型:占一位,值只有true\false
    字节
    1. 位bit:是计算机内部数据储存的最小单位,11001100是—个八位二进制数
    2. 字节byte:是计算机中数据处理的基本单位,习惯上用大写B来表示,1B=8bit
    3. 字符:是指计算机中使用的字母、数字、字和符号
  5. 拓展
    • 进制、精度
    public class Demo3 {
     public static void main(String[] args) {
         int i1 = 10;
         int i2 = 010;//八进制以0开头,8
         int i3 = 0x10;//十六进制以ox开头,16
         System.out.println(i1);
         System.out.println(i2);
         System.out.println(i3);
    	      
         float f = 0.1f;
         double d = 1.0/10;
         System.out.println(f==d);
         System.out.println(f);
         System.out.println(d);
    	 //
         
         float d1 = 22323232323232f;
         float d2 = d1+1;
         System.out.println(d1);
         System.out.println(d2);
         System.out.println(d1==d2);
         //银行业务少用浮点数进行比较;
     }
    }
               
    1. 转义字符

      \t 制表符

      \n 换行

    System.out.println("Hello\tWorld");
    System.out.println("Hello\nWorld");
               
    2021-08-15 Java基础语法Java基础语法
    其他常用转义符如下:
    2021-08-15 Java基础语法Java基础语法
    引用-博客园-刘小将
    1. 布尔值
    flag = true
    if(flag=true){}
    if(flag){}
    //两者作用相同
               

引用类型

  1. 接口
  2. 数组

类型转换

类型级别

低级可以自动转换成高级

2021-08-15 Java基础语法Java基础语法

强制转换

高级转换成低级:变量前加(类型),内存溢出会循环

public class Demo5 {
    public static void main(String[] args) {
        int i = 128;
        byte b = (byte)i; //内存溢出,循环

        System.out.println(b);
        System.out.println(i);
    }
}
//b=-128
           
  1. 不能转换转换布尔值
  2. 类型要相干
  3. 大容量到低容量要强制转换
  4. 转换可能存在内存溢出或精度问题
char c = 'a';
int d = c+1;
System.out.println(d);//98
System.out.println((char) d);//b
           
public class Demo6 {
    public static void main(String[] args) {
        int money = 10_0000_0000;//JDK7以后数字见可用_分割,且不会输出
        int year = 20;
        int total1 = money*year;//int类型超过21亿溢出
        System.out.println(total1);

        long total2 = money* year;
        System.out.println(total2);//乘法运算时已经出问题,再转换没用

        long total3 = money*(long)year;
        System.out.println(total3);//把其中一个转换成long
    }
}

           

变量、常量

每个变量都必须声明类型

变量的作用域

  1. 类变量 定义在class下面,static开头,可以在方法内直接调用
  2. 实例变量 定义在class下面,不必初始化,默认值0 0.0 布尔值默认false,除了基本类型其他都是null。方法内调用得先new一个对象。
  3. 局部变量 方法内部,其他方法不能调用
public class Demo8 {
   
   	 //类变量 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 Demo8()
     	   Demo8 demo8 = new Demo8();
      	   System.out.println(demo8.age);
      	   System.out.println(demo8.name);
           System.out.println(salary);
       	}
   
    	//其他方法
   	 public void add(){
       }
   }

           

常量

初始化之后就不能再改

final 常量名=值

常量名一般用大写字符

变量的命名规范

  1. 所有变量、方法、类名:见名知意
  2. 类成员变量:首字母小写和驼峰原则: monthSalary,除了第一个单词外,后边单词首字母大写。lastname->lastName
  3. 局部变量:首字母小写和驼峰原则
  4. 常量:大写字母和下划线: MAX_VALUE
  5. 类名:首字母大写和驼峰原则:Man, GoodMan //规范
  6. 方法名:首字母小写和驼峰原则:run(), runRun()

运算符

Java支持的运算符

  1. 算数运算:+ - * / %(模运算,即取余) ++ –
  2. 赋值运算:=
  3. 关系运算:> < >= <= ==(等于) !=(不等于) instanceof
  4. 逻辑运算:&& || ! 与或非
  5. 位运算:& | ~ ^ >> << >>>
  6. 条件运算:? :
  7. 扩展赋值运算:+= -= *= /=
package Operator;

public class Demo01 {
    public static void main(String[] args) {
        //二元运算符
        int a = 10;//快捷键CTRL+D复制当前行到下一行
        int b = 20;
        int c = 30;
        int d = 30;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);        //int
        System.out.println((double)a/b);
    }
}
           
package Operator;

public class Demo02 {
    public static void main(String[] args) {
        long a = 123123123123L;
        int b = 123;
        short c = 32767;
        byte d = 127;
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//int
        System.out.println(c+d);//int
        //有一个是Long,全是long,否则全是int。
    }
}
           
package Operator;

public class Demo03 {
    public static void main(String[] args) {
        //大于小于返回结果是布尔值,true/false
        int a = 10;
        int b = 20;
        int c = 21;
        System.out.println(a>b);    //false
        System.out.println(a<b);    //true
        System.out.println(a==b);   //false
        System.out.println(a!=b);   //true
        System.out.println(c%a);    //取模=1
    }
}
           

自增自减(++ --)

  1. a++ 相当于隐藏语句a=a+1 在a++所在语句执行后执行 b=a++//先赋值,再自增
  2. ++a 相当于隐藏语句a=a+1 在++a所在语句执行前执行 b=++a//先自增,再赋值
  3. – 用法类似

幂运算

数学计算类库 Math

Math.pow

package Operator;

public class Dmeo04 {
    public static void main(String[] args) {
        //自增自减
        int a = 3;

        int b = a++;//a = 3, b=3;
        //a=a+1;隐藏
        System.out.println(a);//a=4;
        System.out.println(b);//b=3;

        //a=a+1;
        int c = ++a;    //a=5,c=5;
        System.out.println(c);

        int d = a--;//d=5
        System.out.println(d);//a=4

        int e = --a;//a=3,e=3;

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

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

    }
}

           

逻辑运算

与&&,两个都为T,则为T;

或||,一个为T,则为T;

非!,T变为F。

短路运算

与运算a&&b,若a为false,则b直接跳过,程序返回false。

package Operator;

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

        System.out.println("a && b:"+(a && b));
        System.out.println("a || b:"+(a || b));
        System.out.println("!(a && b):"+!(a && b));

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);
        System.out.println(c);
    }
}

           

位运算

//每位进行与或非
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怎么计算最快	分解为2*2*2
//左移右移
//    <<	>>
package Operator;

public class Demo06 {
    public static void main(String[] args) {
        System.out.println(2<<3);//16
        /*
        2 写成8位二进制
        2 = 0000 0010   1左移一位,数字变成2倍
        2<<3位变大2^3倍
        效率极高
         */
    }

}
           

扩展赋值

字符串连接符

“+” 加号两侧出现String类型,会自动把其他类型变成String

空字符串在前,先变成字符串再连接,空字符串在后,先计算再变成字符串连接

package Operator;

public class Demo07 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        a+=b;//a=a+b;

        System.out.println(a);//30
        //a=30;b=20;
        System.out.println(""+a+b);//3020
        System.out.println(a+b+"");//50
    }

}
           

条件运算符

x ? y : z

若x位true,则值为y,否则为z。

package Operator;

public class Demo08 {
    public static void main(String[] args) {
        //条件运算符
        int y = 1;
        int z = 2;
        boolean x = true;
        System.out.package Operator;

public class Demo08 {
    public static void main(String[] args) {
        //条件运算符
        int score = 85;
        String type = score > 60 ? "合格" : "不合格";

        System.out.println(type);//合格
    }
}

           

包机制

包的本质就是一个文件夹。

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

导包:import import com.guyuer.Base.Demo2;导入Base下的Demo2类。 import com.guyuer.Base.*; 导入Base包下所有的类。

JavaDoc

生成API文档

package com.guyuer.Base;

/**
 * @Author GuYuer
 * Version 1.0
 * Since 1.8
 */
public class Doc {
    String name;

    /**
     *
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

           
在cmd中操作
  1. 在类所在位置打开cmd命令窗口
  2. 输入javadoc -encoding UTF-8 -charset UTF-8 Doc.java //-encoding 和 -charset设置是防止中文乱码
  3. 在文档目录会生产html文件,打开index.html
    2021-08-15 Java基础语法Java基础语法