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
可以看到:
- 溢出类似一个轮回的圈。从-128~127,当数字比127大1时,又到了-128.
- 在一定范围内。原数和溢出后的数绝对值相加为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;//修饰符位置不同