JAVA基础语法(一)

JAVA基础语法(一)

目录

  • 注释
  • 标识符
  • 数据类型
  • 变量&&常量

注释

  • 单行注释 //内容
  • 多行注释 /*多行内容*/
    • IDEA更改注释颜色:file->setting->editor->code scheme->java->comment (comment有注释的意思阿)
    • 在IDEA中,ctrl+/可以多行注释,达到选中的每一行前都添加一个 //
  • 文档注释JavaDoc
    • 类似如下
/**
@Author
@Description
*/

标识符

拼写规则

可以由 $ 作为开头,其余与C++类似。

包括:

关键字
类名
方法名
变量名

关键字

Todo:关键字的作用总结
关键字都是小写字母,JAVA有50个关键字以及三个直接量。
其中48个关键字是被使用的,两个关键字作为保留关键字,goto、const。
三个直接量是null、false、true。
这53个字符都不能作为标识符命名。

关键字一览

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

标识符命名规范

  • 见名知意
  • 英语而非拼音
  • 类名:大写驼峰class HelloWorld
  • 变量:小写驼峰int bookNumber
  • 常量:大写下划线final int MAX_BOOK
  • 方法名:小写驼峰void printHello()

数据类型

Java是强数据类型语言。

JAVA数据类型分类

  • 基本数据类型
    • 数值型
      • 整数
        • byte:8bit,-128~127
        • short:16b
        • int:32b
        • long:64b
      • 小数
        • float:32b
        • double:64b
    • 字符型
      • char: 16b,unicode
    • 布尔型
      • boolean: 1bit而不是一个字节,true,false
  • 引用数据类型
    • 接口
    • 数组

基本数据类型8种

byte byteMax = 127;  //2^7-1
short shortMax = 32767; // 2^15-1==32767
int intMax = 0x7fff_ffff;  //2^31-1==21_4748_3647
long longMax = 0x7fff_ffff_ffff_ffffL  //2^63-1 == 922_3372_0368_5477_5807
//long类型最后必须带一个L,最好是大写L,防止与数字1混淆。
float floatNum = 1.234F;  //必须加F
double doubleNum = 1.234;
char charType = 'a';  //不能用双引号
char char2 = '中',char3 = '\u0061'  //charType==char3,97==0x61
boolean boolType = false;
  • long和float类型需要在数字后面加字母。L和F,最好大写字母。
  • 0b开头表示二进制数;0开头表示8进制数,如int x=010;,x的真值是8。
  • 从JDK 7加入新特性,允许数字里加入下划线,如10000==1_0000
  • 基本数据类型和Integer等类不一样,初学者可以用首字母是否大写来区分。
  • 由于float和double精度可能不足,我们使用BigDecimal类。(数学工具类)

一个小点:
关于long类型数据后面加L,当这个数小于2^31-1时,如下代码也能运行:

long x = 100;

其实这里100是默认int类型,但是在赋值时被自动转换为long类型。
验证:
如果我们运行 long y =21_4748_3648;// INT_MAX + 1
报错信息是Integer number too large,这侧面说明了没有后缀L的整数默认是int类型。

基本数据类型转换

基本数据类型转换方式

由低到高是:
byte、short、char-->int-->long --> float-->double

  • 注意:long虽然比float所占空间大,但是依旧属于低级。所有的整数都比小数低级。
    我们有两种转换方法:

由高到低的强制类型转换,如:

int x=100
short y=(short)x

由低到高的自动类型转换


舍入&&溢出

舍入

float,double转化为int类型时舍入向0靠近。
便携记忆:Java作为咖啡,杯口是圆的;就像一个零,所以舍入时向0靠近。

大数溢出

由于整数内部是补码,当其值大于其数据类型最大值后会溢出,仅保留低位。
比如:

(byte) 128 输出为---> -128
(byte) 129 输出为---> -127
可以看到:

  1. 溢出类似一个轮回的圈。从-128~127,当数字比127大1时,又到了-128.
  2. 在一定范围内。原数和溢出后的数绝对值相加为2^8。这个范围是-256 ~ 256。

一个小点:

当一个long作为左值,而右边是int的计算式时,会先得到一个int类型的中间结果,再将这个结果赋值给左边。如下代码,由于int类型的x*20是超出int最大值,所以溢出,得到的long是溢出后截断的int数经过自动转化得到的结果。

int x = 10_0000_0000;
long y = x*20;
long z = 10_0000_0000*20;  //z == y

变量&&常量

变量三要素

  • 变量名
  • 类型
  • 作用域

trick:不建议一行声明多个变量。

变量分类

  • 类变量--静态变量:方法之外+static修饰(块外)
  • 实例变量--成员变量:方法之外+没有static(块外)
  • 局部变量:方法之内
  • Java没有类之外的全局变量,可以通过定义public static的类变量来实现

例子如下

class Test{
    static int x = 100; //类变量
    float y = 1.00F;  //实例变量
    void test(){  
        boolean z = false;  //局部变量
    }
}

类变量

  • 静态变量在第一次被访问时创建,在程序结束时销毁。(如果类提前卸载呢?Todo)
  • 从属于类,一个类的多个对象共享同一个类变量,他们在引用类变量时内存地址相同。
  • 经常与public final搭配使用
  • 具有默认值,类似0、0.0、false除了基本类型,一般默认初始化为null
  • 使用方法是类名.变量名而不是实例对象名.变量名

实例变量

  • 对象实例化后,实例变量的值就确定了。(当然,后面可以更改)
  • 在对象创建时创建,在对象销毁时销毁
  • 经常private + 方法调用
  • 静态方法和其他类使用完全限制名ObjectName.variableName
  • 可以声明在使用前或使用后
  • 具有默认值,参照类变量

局部变量

  • 在方法、构造方法以及代码块中生存
  • 不能使用访问修饰符public、private等
  • 需要初始化,没有默认初始值
  • 存储在栈中,栈内存 ( stack ) 是JVM的内存里的一块空间,方法会分配栈的空间,所以方法里的局部变量也使用栈里的空间。栈溢出:为了防止栈溢出,不要对两个方法相互调用。

常量Constant

  • 使用关键字final
  • 修饰符位置可以互换,但是为了风格统一,public static final int BOOK_MAX = 100;是比较统一的写法。
final static double PI = 3.14;
static final int BOOK_MAX = 100;//修饰符位置不同

posted @ 2022-06-24 04:14  WordDealer  阅读(32)  评论(0编辑  收藏  举报