/**
* JavaSE 基础
*
*/
public class Hello {
public static void main(String args[]){
int i1 = 212;
int i2 = -212;
int i3 = 2_000_000; //用下划线更容易识别
int i4 = 0xff0000; //十六进制表示
int i5 = 0b1100; //二进制表示
long l = 100000000000000L;
float f1 = 3.14f;
float f2 = 3.14e38f;
double d1= 1.79e308;
{
boolean b1 = true;
boolean b2 = false;
}
boolean checkgereater = 5>3;
// Java 语言对boolean的存储没有规定,因为理论上只要1个bit,但是Java虚拟机内部会把boolean表示为4个字节整数。
// java 的char 要用单引号,要和字符串string区分开,字符串用双引号:""
char a = 'A';
char zh = '中';
System.out.println(zh);
// 除了上述的基本类型外,剩下的都是引用类型,引用类型最常见的是 String。
String s = "hello";
// 引用类型的变量存储是数据的地址,指向数据存放的内存位置
// 常量
final double D = 3.14;
// D = 3.15; will result compile error.
StringBuilder strb = new StringBuilder();
var strb1 = new StringBuilder();
// 自增、自减
int n = 100;
int n1 = n++;
int m = 100;
int n2 = ++m;
System.out.println(n1+" "+ n2);
{
// 移位运算
int a1 = 7;
int b1 = 7 << 1;
int b2 = 7 << 29;
System.out.println(Integer.toString(a1)+b1+b2);
// 对byte和short类型进行移位时,会首先转换为int再进行位移。
{
int i = 1234567;
short s1 = (short) i; // 12345
System.out.println(s1);
}
// 浮点数运算误差
{
double bb1 = 1.0/10;
double bb2 = 0.1;
double bb3 = 1-9.0/10;
System.out.println(bb1 == bb2);
System.out.println(bb2);
System.out.println(bb3);
//浮点数不管是float还是double都会有计算误差。
// 所以在判断两个浮点数是否相等的时候可以用它们的差是否小于一个非常小的数字。
double res1 = Math.abs(bb1-bb3);
if (res1 < 0.0000000001){
System.out.println("yes ,is equal");
}
// 两个整数进行运算时候,不会类型升级
double d = 1.2 + 24 / 5; // 5.2
// 如果要进行四舍五入,可以对浮点数加上0.5再强制转型:
double d11 = 2.6;
int n11 = (int) (d11+0.5);
System.out.println(n11);
}
// 三目运算 也叫做三元运算
int n_1 = -100;
int x_1 = n_1>0? 100 : 101;
System.out.println(x_1);
// 可以直接用转义字符'\'u Unicode编码来表示一个字符
char c1 = '\u0041';
System.out.println(c1);
// '\" 表示字符"
// '\' 表示字符'
// '\\ 表示字符\
// '\n 表示换行符
// '\r 表示回车符
// '\t 表示Tab
// '\'u#### 表示一个Unicode编码的字符
// 多行字符串
String lines_str = "good \n"+
"job\n"+
"yes";
String lines_str1 = "good"+
"job"+
"yes";
System.out.println(lines_str);
System.out.println(lines_str1);
// Text block literals are not supported at language level '11'
// is since from Java 13
// String text_block = """
// jianyi
// haode
// nihao
// """;
// 数组类型
int[] arr = new int[3];
System.out.println(arr.length);
arr[0] = 1;
arr[1]=2;
arr[2] = 3;
System.out.println(arr.length);
float[] arr_f = new float[]{1.0f,2.0f,3.0f};
// 字符串数组
String[] names = {"ABC", "XYZ", "zoo"};
System.out.println(names[1]);
String s1 = names[1];
names[1] = "cat";
System.out.println(s1); // s是"XYZ"还是"cat"?
// 多维数组的指向
int[][] ns = {
{ 1, 2, 3, 4 },
{ 5, 6, 7, 8 },
{ 9, 10, 11, 12 }
};
// 这个arr0变量保存了ns第一个数组的位置,拿到了指向的引用,所以修改后,值会变化
int[] arr0 = ns[0];
arr0[0] = 111;
System.out.println(arr0[0]);
System.out.println(ns[0][0]);
// 命令行参数
for(var arg:args){
System.out.println(arg);
}
}
}
}