打卡Java笔记,这里是《JAVA从入口到放弃》第二章(* ´з`*)
变量与常量
- 标识符:变量与常量的名字,严格区分大小写(如Hello和hello)
- Java使用Unicode标准字符集
- 常量的声明:final 数据类型 常量名称(一般全大写) ,只能赋值一次(赋值和声明可以分离,但只能赋值一次!)
final int a;
a = 1;//这样是可以的
final int b;
b = 1;
b = 2;//这样是不可以的
基本数据类型
- Java的整数类型
~ byte 1字节 8位 -128~127
~ short 2字节 16位 -32768~32767
~ int 4字节 32位 -2147483648~2147483647(系统默认类型,整数赋值OR输出都默认int)
~ long 8字节 64位 -2的64次方~2的64次方-1
如果一个式子计算结果位long而过程的整数没有另外的声明的话,需要在整数后面加个L(大写小写都行),也就是:
long right = 123456789l*987654321l;
//这样写,和下面是相等的
long a = 123456789l;//这里如果不加l其实就等于int 临时变量 = 123456789;long a =(long)临时变量;
long b = 987654321l;
long c = a*b;//结果为121932631112635269
long right = 123456789*987654321;
//这样写,和下面是相等的
int a = 123456789;
int b = 987654321;
int c = a*b;
long d = (long)c;//结果为-67153019
- 进制的区别
~ 八进制在数字前面加上0,十六进制加上0x
~ 输出默认转回十进制,so如果要按原来进制输出,需要↓(Φ皿Φ)
public class TestJava{
public static void main(String[] args){
int a = 100;
int b = 0100;
int c = 0x100;
System.out.println("a = " + a);
System.out.println("二进制 a = " + Integer.toBinaryString(b));
System.out.println("b = "+b);
System.out.println("八进制 b = " + Integer.toOctalString(b));
System.out.println("c = "+c);
System.out.println("十六进制 c = " + Integer.toHexString(c));
}
}
/*
输出:
a = 100
二进制 a = 1000000
b = 64
八进制 b = 100
c = 256
十六进制 c = 100
*/
如果中文在cmd里编译出错(java:10: 错误: 编码 GBK 的不可映射字符),就在编译的时候加上编码(javac -encoding utf-8 TestJava.java)
- 浮点数
~ 默认是double,如果要用单精度float,要在数字后面加f
~ 浮点数不能直接用==来全等,只能计算Math.abs ( a - b ) < (1e-6);
~ 1e-6指1*10的-6次方,是计算机最小数的概念
!!!!说一下我对赋值“ = ”的想法
之所以在数值里强调默认是int默认是double,是因为=号左边的变量名是带类型声明的,但=号右边的数值作为一个临时的变量,如果不加后缀(l\L或者f\F),则会被当成默认的int或者double,编译的时候会提示:
TestJava.java:5: 错误: 过大的整数: 121932631112635269
long c = 121932631112635269;
TestJava.java:4: 错误: 不兼容的类型: 从double转换到float可能会有损失
float b = 0.0001;
运算符
- 自增和自减运算符:放在变量之前会先增减1再参与运算,放再之后则先运算再增减1
public class TestJava{
public static void main(String[] args){
int a = 1;
int b = a++;
int c = ++a;
System.out.println(a);//3
System.out.println(b);//1
System.out.println(c);//3
}
}
- 位运算符:用的很少,用到之后再细看
- 复合赋值运算符:同上(书本P45自查)
网友评论