java入门(二) 语法
一 注释
1)单行注释
//这是单行注释
int a = 10;
2) 多行注释
/*
这是多行注释
*/
int a = 10;
3)文档注释
/**
* @author SixA
* @version 1.0
* 这是文档注释
*/
public class Hello{
}
二 标识符
1)关键字(系统保留字)
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 |
2)标识符规则
- 所有标识符都应该以字母(A-Z 或 a-z),美元符($),或者下划线开始(_)开始
- 首字符之后可以是字母(A-Z 或 a-z),美元符($),下划线(_)或数字的任何字符组合
- 不能使用关键字作为变量名、方法名或类名
- 标识符是大小写敏感的
- 可以使用中文命名,但一般不建议这样使用,也不建议使用拼音,很low
三 数据类型
强类型语言
要求变量的使用要符合严格规定,所有变量都应该先定义后才能使用
java,c,c++等
弱类型语言
javaScript,python等
java数据类型分为两大类
基本数据类型(primitive type)
数值类型
整数类型
类型 | 占用字节(B) | 范围 |
---|---|---|
byte | 1 | -128 - 127 |
short | 2 | -32678 - 32767 |
int | 4 | -2147483648 - 2147483647 |
long | 8 | -9223373036854775808 - 9223373036854775807 |
浮点类型
类型 | 占用字节(B) |
---|---|
float | 4 |
double | 8 |
字符类型
类型 | 占用字节(B) |
---|---|
char | 2 |
boolean类型
boolean 占一位,其值只有true和false
引用数据类型(reference type)
类
接口
数组
数据类型注意点
- 在定义float类型时,要在后面加上F,在定义long类型时,要在后面加上L
float a = 1.0F
long b = 10000L
-
尽量避免使用浮点类型作比较(使用BigDecimal)
float a = 0.1F; double b = 1.0/10; System.out.println(a==b);//false float c = 232323232332232323F; float d = c + 1; System.out.println(c==d);//true
-
二进制以0b开头,八进制以0开头,十六进制以0x开头
int a = 0b10; int b = 010; int c = 0x10; System.out.println(a);//2 System.out.println(b);//8 System.out.println(c);//16
-
jdk7新特性,在表示大数时可以加上下划线,对数据本身不会影响,只为了便于阅读
int a = 10_0000_0000; System.out.println(a);//1000000000
-
字符本质上还是以数字存储,而且两者可以相互转换
int a = 70; System.out.println((char)a);//F char c = 'F'; System.out.println((int)c);//70
四 类型转换
强制类型转换(大类型转小类型)
int a = 10;
byte b = (byte) a;
自动类型转换(小类型装大类型),也可以显示转换
byte a = 10;
int b = a;
byte c = 10;
int d = (int)c;
注意点
- 不能对布尔值(boolean)进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转低容量的时候强制转换,可能存在溢出或精度问题
int a = 128;
byte b = (byte)a;
System.out.println(b);//-128 溢出
float c = 3.14F;
int d = (int)c;
System.out.println(d);//3 精度问题
-
操作大数时注意溢出问题
int a = 1000000000; int b = 100; long c = a * b; System.out.println(c);//1215752192,在进行自动类型转换前已经溢出 long d = (long) a * b; System.out.println(d);//100000000000,先进行类型转换,再进行计算,没有溢出
##五 变量
-
变量是什么:就是可以变化的量
-
Java是一种强类型语言,每个变量都必须声明其类型
-
Java变量是程序中最基本的存储类型,其要素包括变量类型,变量名和作用域
int a; //变量类型 + 变量名 = 变量值
注意事项
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
作用域
类变量,实例变量,局部变量
public class Hello{
static int a;//类变量,不需要初始化
int b;//实例变量(属性),不需要初始化,默认值为0
String s;//实例变量(属性),不需要初始化,默认值为null,除基本类型,其他类型都是null
//hello方法
void hello(){
int c = 1;//局部变量,必须声明和初始化
}
}
六 基本运算符
算数运算符:+, -, *, /, %, ++, –
int a = 10;
int b = 5;
int c = a + b;//15
int d = a - b;//5
int e = a * b;//50
int f = a / b;//2
int g = a % b;//0
int h = a++;//11
int i = a--;//9
赋值运算符:=
int a = 10;
关系运算符:>, <, >=, <=, ==, !=, instanceof
int a = 10;
int b = 5;
System.out.println(a>b);//true
System.out.println(a<b);//false
System.out.println(a==b);//false
System.out.println(a!=b);//true
System.out.println(a>=b);//true
System.out.println(a<=b);//false
逻辑运算符:&&, ||, !
boolean a = true;
boolean b = false;
System.out.println(a && b);//false
System.out.println(a || b);//true
System.out.println(!a);//false
位运算符:&, |, ^, ~, >>, <<, >>>
/*
A = 1001 1101
B = 1100 1011
A & B = 1000 1001
A | B = 1101 1111
A ^ B = 0101 0110
~A = 0110 0010
*/
int a = 2;
System.out.println(a >> 1);//1,相当于a/2,若操作的值为正,则在高位插入0;若值为负,则在高位插入1。
System.out.pringln(a << 3);//16,相当于a*2*2*2
System.out.println(a >>> 1);//1,无符号右移:忽略了符号位扩展,0补最高位 无符号右移运算符>>> 只是对32位和64位的值有意义。
条件运算符:? :
int a = 10;
int b = a > 5 ? 6 : 7;
System.out.println(b);//6
扩展赋值运算符:+=, -=, *=, /=
int a = 5;
int b = 6;
a += b;//相当于a = a + b;
a -= b;//相当于a = a - b;
a *= b;//相当于a = a * b;
a /= b;//相当于a = a / b;