1.注释
// 单行注释
/* … / 多行注释
/* … */ 文档型注释,Java独有的
//注释:
//单行注释
/*
多行注释
多行注释
多行注释
多行注释
*/
/**
* JavaDoc:文档注释
* @Author:。。。
*
* */
public class HelloWorld {
public static void main(String[] args) {
System.out.println("day1.HelloWorld");
}
}
2.标识符
- 标识符由字母、数字、下划线“_”、汉字、美元符号“$”组成,第一个字符不能是数字。
- 不能把java关键字和保留字作为标识符。
- 标识符没有长度限制。
- 标识符对大小写敏感。
//标识符:
// 关键字
// Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
public class Demo1 {
public static void main(String[] args) {
String Ahello = "qf";
String hello = "hkj";
String $hello = "hkjdh";
String hello123 = "hjvgeh";
// String 8hello = "gfjh"; //第一个字符不能是数字
}
}
3.数据类型
- 基本类型(primitive type)
- 引用类型(reference type)
package day1;
//数据类型
// 基本类型(primitive type)
// 引用类型(reference type)
public class Demo2 {
public static void main(String[] args) {
//八大基本数据类型(primitive type)
// 数(小数)、字符、是非
//整数类型
byte num1 = 127;//1字节 -128~127
int num2 = 10;//2字节
short num3 = 20;//4字节
long num4 = 30L;//8字节
//浮点数-->小数
float num5 = 14.3f;//4字节
double num6 = 3.1415926;//8字节
//字符类型
char a = 'h';//2字节
// char b = 'hang';
//char虽然为2个字节,但只能存一个字符
char c = 'a';
char d = 'n';
char e = 'g';
//布尔类型-->是非
boolean flog1 = true;//布尔值类型只占1字节
boolean flog2 = false;
//引用数据类型(reference type)
//除了基本数据类型之外的类型都叫引用数据类型
//例
String s1 = "kfc";
String s2 = "Hello";
}
}
数据类型拓展:
- 进制
- 浮点数精度问题
- 转义字符
- 语法等式优化
package day1;
import java.math.BigDecimal;
public class Demo3 {
public static void main(String[] args) {
//数据类型拓展
//整数拓展:进制
// 二进制 逢二进一 0 1
// 八进制 逢八进一 0~7
// 十进制 逢十进一 十进制数是我们日常生活中使用的数
// 十六进制 逢十六进一 以0x开始加A~F、0~9
int i1 = 0b10; //二进制以0b开头
int i2 = 010; //八进制以0开头
int i3 = 10;
int i4 = 0x10; //以0x开始的数据表示16进制
System.out.println(i1);//2
System.out.println(i2);//8
System.out.println(i3);//10
System.out.println(i4);//16
System.out.println("------------------");
//浮点数拓展:float、double
float m = 0.2f;
double n = 2.0/10;
System.out.println(m==n);//输出为false
System.out.println(m);//0.2
System.out.println(n);//0.2
float a = 346734787987f;
float b = a + 1;
System.out.println(a==b);//输出结果为true
double c = 45876288092789477498.7;
double d = c + 1;
System.out.println(c==d);
System.out.println("------------------");
//float 为单精度浮点型
//double 为双精度浮点型
//浮点数能表现的字长有限、离散,存在舍入误差的特点;得到的结果只是接近但不等于
//最好完全避免使用浮点数进行比较
// 可以使用BigDecimal 数学工具类
//字符拓展
char f1 = 'a';//(int)f1 = 97
char f2 = 'A';//(int)f2 = 65
char f3 = '三';
System.out.println(f1);
System.out.println((int)f1);//强制转换
System.out.println((int)f2);
System.out.println((int)f3);
//所有的字母本质还是数字
// Unicode 编码表:(97 = a 65 = A)2字节 0 ~ 65536
//转义字符
// \t 制表符
// \n 换行
//...
System.out.println("Hello\tworld");
System.out.println("Hello\nworld");
System.out.println("------------------");
//布尔值拓展
//语法等式优化
boolean flag = true;
if (flag==true){
System.out.println("hei");
}
if (flag){
System.out.println("hei");
}
}
}
4.类型转换
- 强制转换 (类型)变量名 高—>低
- 自动转换 低—>高
package day1;
//类型转换
//低------------------------------高
// byte,short,char-> int -> long -> float -> double
//小数的优先级一定大于整数
public class Demo4 {
public static void main(String[] args) {
//强制转换 (类型)变量名 高--->低
int i = 128;
byte j = (byte) i;
System.out.println(i);//128
System.out.println(j);//-128;内存溢出 byte为-128~127
//自动转换 低--->高
int a = 127;
double b = a;
System.out.println(b);//127.0
char c = 'A';
int d = c + 1;
System.out.println(d);//66
System.out.println((char) d);//B
// System.out.println((boolean) a);//不兼容的类型: int无法转换为boolean
System.out.println((int) 45.6f);//45
System.out.println((int) 34.87);//34
/*
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转化为不相干的类型
3.在把高容量转换到低容量的时候,强制转换; 反之,为自动转换
4.转换的时候可能存在内存溢出、或者精度问题!
*/
}
}
数值溢出
package day1;
public class Demo5 {
public static void main(String[] args) {
//操作比较大的数的时候,注意溢出问题
int money = 1_000_000_000;
int years = 30;
int total = money*years;
//数字之间可以用下划线分割
System.out.println(money*years); //-64771072,计算的时候溢出了
long total2 = money*years; //money*years默认是int类型,转换之前已经存在问题了
System.out.println(total2); //-64771072
long total3 = ((long)money)*years; //先把一个数值转换为long
System.out.println(total3); //30000000000
}
}