Java基础梳理 II
标识符
概念:对某物体进行命名,从而使得程序进行识别;
硬性要求:
- 标识符必须以字母、下划线或者美元符号开头;
- 其他部分必须是字母、数字、下划线或者美元符号。其中不能包含类似“+”的特殊字符;
- 标识符区分大小写;
- 不能使用Java关键字或者保留字
一般规范:
1.驼峰标识:每个英文单词首字母大写
a.类名、接口名称在命名时单词首字母大写
b.方法、变量名命名时,第一个单词的首字母小写
2.见名知意
根据标识符可以知道作用含义,但不能是拼音;
Java采用的是Unicode国际通用字符集,2字节;
UTF-8:可变字节长度的字符集
关键字
概念:Java编程语言中,设定的一些特殊的单词,来标识代码中的特殊的结构,或者组成部分;
常量与变量
常量: 在程序运行中,值不会改变的量;明确的数字或者值,以及final修饰;
变量: 在程序运行中,值可以发生变化的量;
变量是程序的基本存储单位,包含变量名、变量类型、作用域;变量在使用前须对其进行声明,在变量声明后,才能为其分配相应长度的存储单元;
注意
- 成员变量:类里方法外,–未赋值时会有默认值;(整型-0;浮点型-0.0;布尔类型-false;字符型-null)
- 局部变量:方法内的变量必须要赋值,进行初始化;无默认值;
- final修饰的变量初始化一次,不可再被赋值,final b =2;b=3;程序报错;
public class Variable {
static byte a;
static short c;
static int d;
static long e;
static boolean f;
static float g;
static double h;
static char m;
public static void main(String[] args) {
int b;
System.out.println(a);//0
// System.out.println(b);//Variable 'b' might not have been initialized
System.out.println(c);//0
System.out.println(d);//0
System.out.println(e);//0
System.out.println(f);//false
System.out.println(g);//0.0
System.out.println(h);//0.0
System.out.println(m);//null
}
}
数据类型
Java是一种强类型语言;
强类型:变量在定义时必须显示的声明具体的类型
弱类型:不需要指定类型,变量会根据值自己去进行推断
整型:byte short int long
byte:1个字节 -128 - 127
short:2个字节 -32768-32767
int: 4个字节 约21亿
long:8个字节
注意
- 在使用整型时,默认都是int类型;
- 如果需要使用long类型,必须在数字背后使用‘L’或‘l’标注:
如:long l = 2429825251L;不加L报错,是由于数字超过21亿,默认为int,超过int的长度;该赋值语句是先在存储空间中创建int类型大小的数字;再进行赋值给l;
浮点型 float double
float:单精度,可以精确到小数点后7位;
double:双精度,精度是float的双倍
注意
- 默认浮点类型为double类型;
- 使用float类型时,数字后面需要加’f‘
- 浮点数在小数位超过精度时,并不精确,存在舍入误差
举例:float f1 = 1.7777777223f;
float f2 = 1.77777771321f;
在程序中进行比较f1和f2时,其大小相等
字符型:char
字符:单引号表示字符;双引号表示一系列字符的集合,叫字符串;
char类型用来表示在Unicode编码表中的字符;
Unicode:Unicode编码被设计用来处理各种语言的文字;占两个字节,有65536个字符;ASCII 码占1个字节有128字符,是Unicode编码的前128个字符;Java语言中允许使用转义字符’\‘来将其后的字符转为其他含义:‘\n’ 表示换行,且在java运行内容中,使用的编码为Unicode;
举例: System.out.println(“abc”+‘\n’+“bcd”);
char类型在内存中存储的是字符的Unicode码值,所以char类型可当作int类型处理;
举例:在Unicode中,A-65;a-97;
char str = A;
那么str == 65;结果为true;
布尔型 boolean
**boolean:**只有true、false两个值,存储占1位;用于逻辑判断
基础数据类型转换
在赋值运算或算术运算时,要求数据类型相同,不同时,需要先进行类型转换;除boolean类型外,所有的基本数据类型因为其各自精度不同,都要注意。
注意:
- 运算过程中,如果两个数据类型不一致,会自动将小的类型转为大的类型;
- 在运算过程中,对于数据类型不一致,可以强制转换,在数据前(dataType)data;
- 强制转换会发生精度损失;结果不准确
等号两侧
右侧 所有变量先转为字节数最多的数据类型进行计算
左侧>右侧 自动转换
左侧<右侧 强制转换
运算符
算术运算符、逻辑运算符、赋值运算符、关系运算符、位运算符、条件运算符
运算符类型 | 运算符 |
---|---|
算术运算符 | +, -, *, /(取商), %(取余), ++(加1), - -(减1) |
赋值运算符 | = |
扩展运算符 | +=(自加), -=(自减), *=(自乘), /= (自除) |
关系运算符 | >, <, >=, <=, ==, != |
逻辑运算符 | &&, ||, ! ,&, | |
条件运算符 | ? : |
位运算符 | &, |, ^, ~, >>, <<, >>> |
算术运算符“++, --”
public class Operation{
public static void main(String [] args){
int a = 1;
System.out.println(++a+a++);//结果为4
}
}
扩展运算符
public class ExtendOperation {
public static void main(String[] args) {
byte a = 2;
byte b = 3;
b += 3;
//a = a + 4; Required type:byte Provided:int
System.out.println(b);//值为
}
}
位运算符:只能操作数值,操作的时候会转为二进制进行运算
&,| :如果两侧是数值,则为位运算符,是表达式则为逻辑运算符;
public class BitwiseOperation {
public static void main(String[] args) {
System.out.println(3 > 2 | 3 < 2);
System.out.println(3 > 2 & 3 < 2);
System.out.println(3 | 2);//11 10 => 11 => 3
System.out.println(3 & 2);//11 10 => 10 => 2
System.out.println(3 ^ 2);// 11 10 => 01 => 1
System.out.println(4 ^ 5);// 100 101 => 001 => 1
//移码、补码、原码、反码
System.out.println(~2);//-3
/**~代表按位取反,2在计算机中为:0...0010;取反:1..1101;最高位为代表符号,所以为负数
*负数是在计算机中为补码的表示,所以减一为反码:1...1100;转为原码:
*100...0011;代表数字:-3/
//左乘右除
System.out.println(2<<2);//8
System.out.println(32>>2);//8
}
}
条件运算符–?:
public class ConditionOperation {
public static void main(String[] args) {
System.out.println(3<4 ? 2 :6 );
//使用的时候需要根一个表达式,表达式为true,返回?后面的结果,表达式为false,返回:后面的结果
System.out.println(true?false:true?false:true);//false
System.out.println(false?false:true?false:true);//false
优先级顺序:单目>算术>关系>逻辑>三目>赋值