目录
1.Java标识符
要求:
- 标识符由字母、数字、_、$(不建议使用)所组成,其中不能以数字开头,不能用Java中的保留字(关键字)
- 标识符采用有意义的简单命名
- “$”不在代码中出现
编码规范:
- 代码中的命名均不能以下划线或美元符号开始,也不能以下划线和美元符号结束。
- 代码命名严禁使用拼音与英文混合的方式,更不允许直接使用中文。
- 类名使用UpperCamelCase风格,方法名、参数名、成员变量、局部变量统一使用lowerCamelCase风格。
- 常量命名全部大写,单词间用下划线隔开。
2.Java关键字
在所有程序中有特殊意义的文字标记
2个未使用的保留字:goto、const
3个特殊含义单词:null、ture、false
追加关键字:enum、default
native:将java代码和其他语言的代码结合起来
3.数据类型
- 默认值
- 小数常量默认double,整型常量默认int。
- 数据类型的默认值需要结合类来使用,作为类的成员变量或静态值,主方法中变量必须先赋值再使用,默认值在主方法中无效(编译无法通过)。
- 在主方法中,声明一个变量而不赋值。如果在此程序中,该变量没有被调用,则编译、运行都可以通过。
public class Test{
//方法一:静态值
//private static int a;
//方法二:类的成员变量
private int a;
public static void main(String [] args){
//方法一:
//System.out.println(a);
//方法二:通过对象调用
Test res=new Test();
System.out.println(res.a); //0
}
}
- 浮点型:
- 若要定义float类型,需要在小数后面追加 f 或 F eg:float f=10.2F;若要定义long类型,需要在数字后追加 l 或 L(Long一般用于描述日期/时间/内存/文件大小(字节)) eg:long l=10L;
- double浮点运算在计算机中无法做到精确。
public class Test3 {
public static void main(String[] args) {
float f=1.1f;
// 1.1是double类型
System.out.println(f*1.1); //1.2100000262260437
System.out.println(f*1.1f); //1.21
}
}
- 除法运算:
public class Test3 {
public static void main(String[] args) {
int a = 10;
int b = 4;
System.out.println(a / b); //2
System.out.println(a / (double) b); //2.5
}
}
- 最大值放在包装类型中,Integer包中包含常量MAX_VALUE、MIN_VALUE:
public class Test{
public static void main(String [] args){
int max=Integer.MAX_VALUE;
int min=Integer.MIN_VALUE;
System.out.println(max); //2147483647
System.out.println(min); //-2147483648
System.out.println();
//若溢出,查看输出情况
System.out.println(max+1); //-2147483648
System.out.println(min-1); //2147483647
//解决溢出问题 注意:+/- 1L
long l=min-1L; //-2147483649
long l1=max+1L; ////2147483648
System.out.println(l);
System.out.println(l1);
}
}
-
3.1 类型转换
Java中小的数据类型与大的数据类型做数值运算时,小的数据类型会自动提升为大的数据类型;大的数据类型转为小的数据类型必须强转,强转可能会丢失数据。
- 练习:
public class Test{
public static void main(String [] args){
System.out.println(11+1l);
}
}
结果:
整型+long型,11先被提升为long型,之后两个long型相加,得12
-
3.2 Byte与int
整型常量若在byte类型的保存范围之内,可以直接赋值给byte变量,无需强转;
若整型常量值超出byte范围,必须强转;(常量,当作一个数字,直接判断数值大小,不受字节大小的影响)
整型变量无论值是否在byte范围中,都需要强转。(将4个字节的变量存入1个字节,势必要强转)
public class Test{
public static void main(String [] args){
//整型常量若在byte类型的保存范围之内
byte b1=15;
//整型常量若不在byte类型的保存范围之内
byte b2=(byte)300;
//整型变量
int i = 10;
byte b = (byte)i;
//注意:当整型变量被final修饰后,可当作整型常量使用
final int i1=127;
byte b3=i1;
System.out.println("整型常量在byte类型的保存范围之内: "+b1); //15
System.out.println("整型常量不在byte类型的保存范围之内: "+b2); //44
System.out.println("整型变量: "+b); //10
System.out.println("final修饰的整型变量: "+b3); //127
}
}
溢出求值:
public class Test {
public static void main(String[] args) {
//byte 1个字节,8位
byte b=(byte)128; //1000 0000 128溢出1,但是其二进制没有超出8位,取最小值
byte b1=(byte)129; //1000 0001 同理,129溢出2,取最小值+1
byte b2=(byte)256; //1 0000 0000 256溢出,其二进制超过8位,直接取后8位b2=0000 0000
byte b3=(byte)300; //1 0010 1100 同理,b3=0010 1100
System.out.println(b); //-128
System.out.println(b1); //-127
System.out.println(b2); //0
System.out.println(b3); //44
}
}
-
3.3 Char与int
Char转int直接赋值,int转char需要强转(转为字符的ASCII码值)。
public class Test{
public static void main(String [] args){
//int 转 char
int a=65;
char b=(char)(a+32);
System.out.println(a); //65
System.out.println(b); //a
//char 转 int
char ch='c';
int i=ch+32;
System.out.println(ch); //c
System.out.println(i); //131
}
}
- 字符型的数字和整型的数字不相等
public class Test{
public static void main(String [] args){
int i=8;
char j='8';
if(i==j){
System.out.println("相等");
}else{
System.out.println("不相等");
}
}
}
- Java采用Unicode编码,16进制编码,可以保存任何文字信息,每个 Unicode 码占用16个比特位。
-
3.4 String类:
描述单个字符用char,描述多个字符用String类。String变量用“ ”表示
”+“表示字符串拼接,只要出现字符串,在字符串之后——其他任何类型与字符串相加都会先转为字符串而后做字符串的拼接操作。在字符串之前——仍按之前的规则运算。
public class Test{
public static void main(String [] args){
int num1=10;
double num2=11.5;
String result1="运算结果:"+num1+num2;
System.out.println(result1); //1011.5
String result2="相加运算结果:"+(num1+num2);
System.out.println(result2); //21.5
}
}
-
3.5 常用转义字符
- 换行:\n 制表符(tab):\t 双引号:\"
4.Java运算符
-
4.1 关系运算符(>、<、>=、<=、== )
返回类型均为boolean(true,false)。可以与逻辑判断语句一起使用、可以直接将字符和数字判断
-
4.2 逻辑运算符
|、& 按位 ||、&& 逻辑
- 以 | 、 || 举例(&、&&同理):
在if语句中使用“|”表示多个条件都需要判断,即便有表达式返回ture,剩余条件仍需要判断。
使用“||”(短路或),只要有条件返回ture,剩余条件不再判断
- Java逻辑运算符使用短路与和短路或
-
4.3 位运算符
位运算的关键在于二进制与十进制的转换。
<< 左移运算符,相当于乘2。低位补0。
>> 右移运算符,相当于除2。高位补低位移出的值。
>>> 无符号右移,高位补0。
public class Test {
public static void main(String[] args) {
int i =9; //1001
int i1=5; //0101
System.out.println(i&i1); //与 0001
System.out.println(i|i1); //或 1101 13
System.out.println(i^i1); //异或 1100 12
System.out.println(~i1); //非 1001 9
}
}
- 练习:
存在使 i + 1 < i的数吗?
存在,溢出后最高位取反