重学Java(Day1)
数据类型
强类型语言
强类型语言也称为强类型定义语言。是一种总是强制类型定义的语言,要求变量的使用要严格符合定义,所有变量都必须先定义后使用。例如c++,java等都属于强类型语言。
弱类型语言
弱类型语言也称为弱类型定义语言。与强类型定义相反。像vb,php,javascript等就属于弱类型语言。
Java语言类型
- 基本数据类型
- 引用数据类型
浮点数拓展:银行业务怎么表示?钱
float double :有限 离散 舍入误差 接近但不等于
最好完全避免使用浮点数作比较
有一个数学工具类 BigDecimal
代码:
@Test
public void test() {
float f = 0.1f; //0.1
double d = 1.0 / 10; //0.1
System.out.println(f);
System.out.println(d);
System.out.println(f==d); //false
float f1 = 3234123512341235f;
float f2 = f1+1;
System.out.println(f1==f2); //true
}
运行结果:
字符拓展
代码:
@Test
public void test2() {
char c1 = 'A';
char c2 = '张';
System.out.println((int)c1); //65 ASCII 码
System.out.println((int)c2);
System.out.println('\u0061'); //Unicode编码
}
运行结果:
所有字符的本质还是数字。
变量、常量、作用域
变量定义
定义格式:type varname [=value],即变量类型 变量名 [=变量值],
注意:
- Java是一种强类型语言,每一个变量都必须声明其类型,类型可以是基本类型,也可以是引用类型;
- 变量名必须是合法的标识符;
- 变量声明必须是一个完整的语句,以分号结束;
变量、作用域
Java有3种变量,分别如下:
- 类变量:在类里面,方法外面用static修饰符声明的变量属于类变量
- 全局变量:在类里面,方法外面声明的变量属于示例变量(又叫做成员变量、实例变量)
- 局部变量:在方法里面声明的变量属于局部变量
public class Demo {
static int num1 = 12; //类变量,用关键字static
int num2 ;//实例变量
public static void main(String[] args) {
int num3 ;//局部变量
}
}
说明:
1、类变量相对于全局变量,可以直接使用;
2、实例变量需要先引用类,才可以使用,如上述例子,要使用num2,需要先引用Demo这个类;
public class Demo {
static int num1 = 12; //类变量,用关键字static
int num2 ;//实例变量
public static void main(String[] args) {
int num3 ;//局部变量
Demo demo = new Demo04();//使用实例变量,需要先引用类,从属于对象
System.out.println(demo.num2);
}
}
3、全局变量如果没有赋初值的话,那么计算机会给默认值,布尔类型默认值为false,String,Integer类型(引用数据类型)默认值为null,其他基本类型默认值为0。
Java常量
Java常量用关键字final来表示,格式为:final type varname = value;
final double PI = 3.1415926535;
常量被赋值后,在程序运行中不允许被改,常量命名一般都大写字母表示。
命名规范
- 类成员变量,首字母小写和驼峰原则,例如月工资,monthSalary;周平均温度,weekAverageTemp
- 局部变量,首字母小写和驼峰原则,同类成员变量命名规范一样
- 常量,大写字母和下划线,如最大值,MAX-VALUE
- 类名,首字母大写和驼峰原则,例如Man,GoodMan
- 方法名,首字母小写和驼峰原则,例如run(),runFirst()
Java运算符
算数运算符:+、-、*、/、%、++、--
- ++
@Test
public void test2() {
int a = 2;
int b = a++; //可以理解为,先把a的值赋给b,a的值再+1
System.out.println(b); //结果2
System.out.println(a); //结果3
int c = ++a; //理解为a+1,然后c=a
System.out.println(c); //结果4
System.out.println(a); //结果4
}
- 幂运算
@Test
public void test3() {
//幂运算 2^3=8 需要使用工具类
double a = Math.pow(2,3);
System.out.println(a); //结果 8.0
}
赋值运算符:=
关系运算符:>,>=、<=、==、!=、instanceof
逻辑运算符:&& 、||、!
& 与 && 的区别:& 和 | 左右两边的式子一定会执行(比较笨),&& 和 || 只要左边的式子能得出结果,右边的式子就不会执行(比较聪明)。
位运算符:&、|、^、~、<<、>>、>>>
12<<2 = 48
12的二进制是: 0000 1100
通过这个图我们可以看出来,所有的位全都向左移动两位,然后把右边空的两个位用0补上,最左边多出的两个位去掉,最后得到的结果就是00110000 结果就是48
条件运算符:?、:
扩展运算符+=、-=、*=、/=
x ? y : z
如果x为true,结果为y,如果x为false,结果为z
@Test
public void test3() {
int score = 50;
System.out.println(score<60?"不及格":"及格"); //不及格
}