Java学习笔记(day01)
注释
- 单行注释: // 注释行
- 多行注释: /* 注释文本 */
- 文档注释: /** 注释文本 */
编译型 , 解释型
通过一个小例子来解释一下这两个名词, 现在有一本中文的小说, 有个外国人想看这本小说, 他肯定看不懂, 此时有两种方案:
-
把这本书翻译成他能看懂的语言 ---------> 编译 ---------> 比如执行 javac test.java, Java编译器会编译这个文件,生成一个test.class, 然后由JVM去解释执行这个test.class.
-
请一个能看懂这本小说, 能和他交流沟通的人, 讲给他听(假如他很有钱) -------> 执行速度依赖硬件的条件,现在硬件都特别好, 所以影响很小.
java是一门既有编译型, 又有解释型的语言.
数据类型
Java 是一种强类型的语言, 对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间.
基本数据类型: 分为四类八种
整型
- byte 1字节(1B(字节) = 8bit; 1KB = 1024B; 1MB = 1024KB)
- short 2字节
- int 4字节 (进制问题: 我们平时使用的是十进制; 0开头的是八进制; 0x开头的是16进制, 0b开头的是二进制)
public class Hello{
public static void main(String[] args) {
int i1 = 10; // 十进制
int i2 = 010; // 八进制
int i3 = 0x10; // 16进制
int i4 = 0b10; // 二进制
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
}
}
输出结果:
10
8
16
2
Process finished with exit code 0
- long 8字节
拓展: 不同数据类型的整型数字运算, 计算结果: 如果含有long,就为long类型,没有long都是int类型.
浮点型
- float 4字节 (代码中尽量不要使用float类型的变量去做比较, 本身精度不高, 银行类的业务可以使用BigDecimal工具类)
- double 8字节
字符型
- char 2字节 (所有的字符本质还是数字)
布尔型
- boolean 1字节 (true/false)
引用数据类型:三种
- 类(class)
- 接口(interface)
- 数组([])
类型转换
- 隐式转换
取值范围小的数据类型与取值范围大的数据类型进行运算时,会先将小的数据类型提升为大的,再做运算
byte,short,char --> int --> long --> float --> double
- 强制转换
public class Hello{
public static void main(String[] args) {
/* 强制转换:
目标类型 变量名 = (目标类型) (被转换的数据).
不建议强制转换,因为会有精度的损失.
byte类型只能表示-127-128, b4的计算结果130在这个范围外, 强制转换为byte时就产生了错误的结果.
*/
int i1 = 10;
byte b1 = 20;
byte b2 = 120;
byte b3 = (byte) (i1 + b1);
byte b4 = (byte) (i1 + b2);
System.out.println(b3);
System.out.println(b4);
}
}
输出结果:
30
-126
Process finished with exit code 0
变量类型
变量的定义格式:
数据类型 变量名 = 初始化值;
String s1 = "world";
public class Hello{
/*
常量: 定义后不能更改, final修饰
*/
final String DB = "2500";
/*
类变量: static修饰
*/
static String s = "world";
/*
实例变量: 属于这个对象,可以不给初始值, 默认值:整型: 0; 浮点型: 0.0; boolean: false; 其他的都是null.
*/
String str; // 实例变量
public void hello(){
/*
局部变量, 必须给初始化的值, 仅在hello方法内部可用
*/
String s1 = "world";
}
public static void main(String[] args) {
}
}