【Java基础入门篇】一、变量、数据类型和运算符
Java基础入门篇
一、变量、数据类型和运算符
1.1 变量
计算机中的数据表示方式是:“二进制(0/1)”,但是同时也可以兼容其他进制,例如八进制、十进制、十六进制等。
Java变量的本质是:存储在固定空间的内容,变量名是通过名字操作空间,数据是会变化的量。变量可以分为局部变量、成员变量、静态变量三类。
常量:是用final
定义的,一次初始化后就不再更改(由final
修饰的变量不能被修改,修饰的方法不能被重写,修饰的类不能被继承)
class Test{
// 定义一个成员变量,属于对象,生命周期伴随对象的始终
int t1 = 100;
// 定义一个静态变量,属于类,生命周期伴随类的始终
static int t2 = 10;
}
写一个简单的方法测试变量定义与输出:
/*
* 用于记录变量定义
*/
public static void testDigital(){
int age = 18;
int b; //使用变量前必须初始化
System.out.println("age: "+ age);
b = 0;
System.out.println("b: " + b);
final double PI = 3.14;
int r = 4;
System.out.println("PI is: " + PI + " radius is: " + r + " area is: " + PI * r * r);
}
1.2 数据类型
Java数据类型包括8种基本数据类型+3种引用类型
- 8种基本数据类型:
- 数值6种:
- 整数类型:byte(1B),short(2B),int(4B),long(8B)
- 浮点类型:float(4B),double(8B))
- 补:1B = 8bit
- 字符型:char
- 布尔型:boolean
- 数值6种:
- 3种引用类型:
- 类
- 接口
- 数组
byte
表示一个字节,范围是-2^7 ~ 2^7-1,即-128 ~ +127,中间的0需要抛去。
Java语言定义整形常量的四种表示形式:
-
二进制(e.g. 要求以0b或0B开头,0b01110011)。
-
十进制整数(e.g. 99,-500,0);
-
八进制整数(e.g. 要求以0开头,015);
-
十六进制(e.g. 要求以0x或0X开头,0x15);
字符集发展-最早是ASCII(英文,数字,特殊字符,控制符),后来发展到了汉语,汉语用两个字节表示(2B)也就是2^16-65536,足以表示所有的汉字,目前汉语最常用的就是UTF-8。
布尔类型(true/false),用于帮助我们进行逻辑判断,通常占用一个字节(1B)或者4个字节(bool数组)
/*
* 用于记录不同进制数值
*/
public static void testInt(){
int a = 100; //十进制
int b = 015; //八进制
int c = 0xff; //十六进制
int d = 0b100110101; //二进制
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
int salary = 3000; //默认类型为int
long yearSalary = 30000000;
System.out.println(yearSalary);
}
1.3 运算符
java提供了丰富的运算符来操作变量,e.g. *, /, %, ++, +=, ==,!=, instanceof, &, |, ?:。当使用算术运算的时候,如果两个操作数有一个为long,最后结果也为long。没有long的时候结构为int(即使操作数权威short,byte)。如果两个操作数其中一个为double,则结果为double,只有两个操作数都未float时,结果才为float。取模运算可以使用浮点数,但是一般使用整数,结果是“余数”,类型为整型,符号与左侧的操作数一致(7%3=1,-7%3=-1)。
/*
* 记录浮点数用法
*/
public static void testFloat(){
double d1 = 3.14;
double d2 = 3.14E2; //科学计数
System.out.println("d1: "+ d1+ " d2: " +d2);
float f1 = 1.65F; //浮点数默认类型是double,改float需要在后面加F
System.out.println(f1);
//浮点数不精确,尽量不要直接比较
float f2 = 0.1F;
double d3 = 1.0/10;
System.out.println(f2 == d3);
float f4 = 324324324L; // 末尾加L表示为long类型
float f5 = f4 + 1;
System.out.println(f4 == f5);
}
/*
* 记录字符串用法
*/
public static void testChar(){
char c1 = 'a';
char c2 = '中';
char c3 = '\u0061';
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//java种字符串不是基本数据类型,而是一个类
String str = "我爱中国";
System.out.println(str);
//转义字符
char c5 = '\n';
System.out.println("a\nb\nc\n");
System.out.println("this is a \'book\'");
}
除此之外,还有输入/输出方法:
/*
* 记录输入/输出用法
*/
public static void testScanner(){
Scanner s = new Scanner(System.in);
System.out.println("请输入姓名:");
String name = s.nextLine();
System.out.println("请输入年龄:");
int age = s.nextInt();
// 在每一个 next()、nextDouble() 、 nextFloat()、nextInt() 等语句之后加一个nextLine()语句,将被next()去掉的Enter等结束符过滤掉
// 否则nextLine()会自动读取上一步next()去掉的回车作为自己的输入
s.nextLine();
System.out.println("请输入性别:");
String sex = s.nextLine();
System.out.println("请输入工资:");
double salary = s.nextDouble();
System.out.println("姓名: "+name +" 年龄: "+age+" 性别: "+sex+" 工资: "+salary);
}