java基本语法

发布时间 2023-12-30 05:53:47作者: 初夏如霞

注释

  • 单行注释:

    //这是单行注释

    //这也是单行注释//

  • 多行注释

    /*这是多行注释 1

    2

    */

  • 文档注释

    /**这是文档注释

    *可以添加一些参数,如:

    *@Author 等

    /

标识符和关键字

关键字

类别 关键字 说明
访问控制 private 私有的
protected 受保护的
public 公共的
default 默认
类、方法和变量修饰符 abstract 声明抽象
class
extends 扩充、继承
final 最终值、不可改变的
implements 实现(接口)
interface 接口
native 本地、原生方法(非 Java 实现)
new 创建
static 静态
strictfp 严格浮点、精准浮点
synchronized 线程、同步
transient 短暂
volatile 易失
程序控制语句 break 跳出循环
case 定义一个值以供 switch 使用
continue 继续
do 运行
else 否则
for 循环
if 如果
instanceof 实例
return 返回
switch 根据值选择执行
while 循环
错误处理 assert 断言表达式是否为真
catch 捕捉异常
finally 有没有异常都执行
throw 抛出一个异常对象
throws 声明一个异常可能被抛出
try 捕获异常
包相关 import 引入
package
基本类型 boolean 布尔型
byte 字节型
char 字符型
double 双精度浮点
float 单精度浮点
int 整型
long 长整型
short 短整型
变量引用 super 父类、超类
this 本类
void 无返回值
保留关键字 goto 关键字,但无法使用
const 关键字,但无法使用

标识符

  • Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
  • 注意事项
    • 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始
    • 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
    • 关键字不能用作标识符
    • 标识符是大小写敏感的
    • 合法标识符举例:age、$salary、_value、__1_value
    • 非法标识符举例:123abc、-salary

数据类型

Java 数据类型分为两大类:基本类型(primitive type)和引用类型(reference type)

字节

  • 位(bit):是计算机内部的最小存储单位

  • 字节(byte):是计算机中数据处理的最小单位,习惯上使用大写 B 来表示

  • 1 B = 8 bit 1KB=1024B 1M=1024KB

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

基本数据类型(8 种)

  • 数值类型:

    • 整数类型:

      • byte,占用一个字节,范围-128~127
      • short,占用两个字节,范围-32768~32767
      • int,占用四个字节,范围-2147483648~2147483647
      • long,占用八个字节,范围-9223372036854775808~9223372036854775807
    • 浮点类型:(都不能用于表示精确的数值,比如货币)

      • float,占用四个字节,默认为 0.0f,float 定义的数后面要加上 f,比如:

        float f = 0.1f;
        
      • double,占用八个字节,默认为 0.0d,浮点数默认为 double 类型

      float 定义的值即使数值和 double 相同,但是 boolean 判断结果仍为 false 是因为两者数据类型不同。

  • boolean 类型:占用一位字节,只有 true 和 false 两个值,默认值为 false,常用输出判断是否正确使用如下:

    System.out.println(f==d);
    
  • 字符类型:

    • char:表示字符,且只能为一个字符,占用两个字节

    想定义字符串需要使用 String(String 不属于 8 大基本数据类型)

引用数据类型

  • 接口
  • 数组

数据类型扩展

  • 不同进制

    • 二进制:0b
    • 八进制:0
    • 十六进制:0x
  • 数据类型强制转换

     char c1 = 'a';
     
     System.out.println((int)c1);
    
  • 转义字符

    符号 字符含义
    \n 换行 (0x0a)
    \r 回车 (0x0d)
    \f 换页符(0x0c)
    \b 退格 (0x08)
    \0 空字符 (0x0)
    \s 空格 (0x20)
    \t 制表符
    \" 双引号
    \' 单引号
    \\ 反斜杠
    \ddd 八进制字符 (ddd)
    \uxxxx 16进制Unicode字符 (xxxx)

类型转换

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

  • 不能对布尔值进行转换
  • 不能把对象类型转换为不相干的类型
  • 在把高容量转换到低容量的时候,需要强制转换
  • 低容量转换为高容量时,会自动转换
  • 转换的时候可能存在内存溢出,或者精度问题
public class test
	public static void main(String[] args){
	int money = 10_0000_0000;	//jdk7 新特性,可以在数字之间加上下划线
	int years = 20;
	int total = money*years;	//输出-1274836480,因为计算结果出现内存溢出了
	long total2 = money*years;	//还是输出-1274836480,因为 money 和 years 都是 int 类型,所以输出结果仍然为 int 类型,需要强制转换 
	long total3 = money*((long)years);	//先把一个数转为 long 类型,这样输出就没有问题了,或者使用int money = 10_0000_0000l;这样也最后可以输出 long 类型数据
	System.out.println(total3);
	}

变量、常量、作用域

变量

  • 定义:变量指可以变化的量。Java 变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
  • 注意:每个变量都有类型,可以是基本类型,也可以是引用类型。

变量作用域

  • 类变量:需要使用关键字,相当于全局变量,可以直接使用,类变量名称遵循首字母小写和驼峰原则:monthSalary 除了第一个单词外,后面的单词首字母都要大写。而类则是遵守首字母大写和驼峰原则:GoodMan

  • 实例变量:从属于对象,如果不自行初始化值,那么就会使用默认值

  • 局部变量:只能在对应的{}中间使用,且必须声明和初始化值,否则无法使用

    public clss Test{
    	static int allClicks = 0;		//类变量
    	String str = "hello world";	//实例变量
    	
    	public void method(){
    		int i = 0;								//局部变量
    		Test test = new Test();		//引用实例变量的对象
    		System.out.println(Test.str);//使用引用对象的实例变量 str
    		System.out.println(allClicks);//可以直接使用类变量 allClicks
    	}
    }
    

常量

  • 定义:初始化后就无法改变的值,一般使用大写字母作为常量名

    final 常量名 = 常量值;
    final double PI = 3.14;
    
    public class Test{
    	static final double PI = 3.14;		//static 和 final 的顺序无所谓,它两都是修饰符
    	
    	public static void main(String[] args){
    		System.out.println(PI);因为是类常量,因此可以直接使用
    	}
    }
    

运算符

  • 算术运算符

    • +:加,也可以充当字符串连接符

      static int a = 10;
      static int b = 20;
      System.out.println(""+a+b)	//结果为 1020
      System.out.println(a+b+"")	//结果为 30
      
    • -:减

    • *:乘

    • /:除

    • %:取余

    • ++:自身加一。b=a++是先赋值b 再自加,而 b=++a 则是先自加再赋值

    • --:自身减一

  • 赋值运算符

    • =:赋值
    • +=:加和赋值。C+=A等价于 C=C+A
    • -=:减和赋值。C-=A 等价于 C=C-A
    • *=:乘和赋值。
    • /=:除和赋值。
    • %=:取余和赋值
    • <<=左移位赋值。C<<=2等价于C=C<<2
    • =右移位赋值。C>>=2等价于C=C>>2

    • &=:按位与赋值。C&=2等价于C=C&2
    • =:按位异或赋值。C=2等价于C=C^2
    • |=:按位或赋值。C|=2等价于C=C|2
  • 关系运算符

    • ==:检查是否相等
    • !=:检查是否不相等
    • >:检查左边的值是否大于右边的值
    • <:检查左边的值是否小于左边的值
    • >=:检查左边的值是否大于等于右边的值
    • <=:检查左边的值是否小于等于右边的值
  • 逻辑运算符

    • &&:逻辑与运算符
    • ||:逻辑或运算符
    • !:逻辑非运算符

    短路逻辑:当使用与逻辑运算符时,在两个操作数都为true时,结果才为true,但是当得到第一个操作为false时,其结果就必定是false,这时候就不会再判断第二个操作了。

  • 位运算符

    • &:如果相对应位都是1,则结果为1,否则为0

    • |:如果相对应位都是 0,则结果为 0,否则为 1

    • ^:如果相对应位值相同,则结果为0,否则为1

    • ~:按位取反运算符翻转操作数的每一位,即0变成1,1变成0。

    • >>:按位左移运算符。左操作数按位左移右操作数指定的位数。

    • <<:按位右移运算符。左操作数按位右移右操作数指定的位数。

    • >>>:按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

      A = 0011 1100
      B = 0000 1101
      -----------------
      A&B = 0000 1100
      A | B = 0011 1101
      A ^ B = 0011 0001
      ~A= 1100 0011
      A<<2 = 1111 0000
      A>>2 = 1111
      A>>>2 = 0000 1111		//>>和>>>的区别在于>>不会补零,而>>>需要补零
      
  • 条件运算符(三元运算符)

    • ?: :该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

      variable x = (expression) ? value if true : value if false
      
      
      public class Test {
         public static void main(String[] args){
            int a , b;
            a = 10;
            // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
            b = (a == 1) ? 20 : 30;
            System.out.println( "Value of b is : " +  b );	//结果为 30
       
            // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
            b = (a == 10) ? 20 : 30;
            System.out.println( "Value of b is : " + b );		//结果为 20
         }
      }
      

包机制

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

  • 包语句的语法格式为:

    package pkg1[. pkg2[. pkg3...]];
    
  • 一般使用公司域名倒置作为包名,比如:com.chuxiaruxia.blog

  • 为了能够使用某一个包的成员,需要在 Java 程序中明确导入该包,使用“import”语句可以完成

    import package1[.package2...].(classname|*);
    import package1[.package2..].*; //导入这个包下所有的类
    

JavaDoc 文档

  • JavaDoc 命令可以用来生成自己API 文档的

  • 参数信息:

    • @author 作者名
    • @version 版本号
    • @since 需要指明需要的最早使用的 jdk 版本
    • @param 参数名
    • @return 返回值情况
    • @throws 异常抛出情况
  • 配置之前的文档注释使用

    /**这是文档注释

    *可以添加一些参数,如:

    *@Author 等

    /