java 基础知识学习
java运行机制
//单行注释
/**/多行注释
/**@Description wangchaoyang*/段注释
标注注意事项
public class Demo02八大基本数据类型 {
public static void main(String[] args) {
//八大基本数据类型
//整数表示方式
int num1 = 10; //最常用 范围-2147483648~2147483648 占用4字节
byte num2 =20;//范围-128~127 占用1字节
short num3 =30;//范围-32768~32767 占用2字节
long num4 =40L;//Long 类型后面要加L 范围-9223372036854775808~9223372036854775807 占用8字节
?
//小数:浮点类
float num5 = 50.1F;//float 类型后面要加F 占用4字节
double num6 = 3.1415926; //占用8字节
?
//字符
char name = 'a'; //占用2字节
?
//字符串,string 不是关键字,是类
String namea = "王朝阳";
?
//布尔值:代表是非 占用1字节
boolean flag = true;
//boolean flag false;
?
}
}
整数、浮点数拓展
public class Demo03整数浮点数拓展 {
public static void main(String[] args) {
//案例1 整数拓展 进制 二进制0b 十进制 八进制0 十六进制0x 输入方式
int i =10;
int i2 =010;//八进制
int i3 =0x10;//十六进制
System.out.println(i);//10
System.out.println(i2);//8
System.out.println(i3);//16 0~9 ABCDEF 16
?
//案例2 浮点数拓展
//银行业务用什么表示?float和double有问题
//float 浮点数表达字符有限 会存在舍入误差 接近不等于
//最好完全使用浮点数进行比较
//应该用用BigDecimal 数学工具类
//少用浮点数进行比较
float f =0.1f;
double d =1.0/10;
System.out.println(f==d);//false
float d1 =2323232323f;
float d2 =d1 + 1;
System.out.println(d1==d2);//true
//案例3 所有字符本质还是数字,把字符强制转换成数字
char c1 ='a';
char c2 ='中';
?
System.out.println(c1);//a
System.out.println((int)c1);//97 强制转换
System.out.println(c2);//中
System.out.println((int)c2);//20013 强制转换
// 编码Unicode (表 97=a)处理各种语言的文字 2字节
//案例4 转义字符 有很多
// \t 字符表
// \n 换行
// \... 还有很多
System.out.println("Hello,world!");//会正常输出Hello,world!
System.out.println("Hello\tworld!");//会输出Hello world!
System.out.println("Hello\nworld!");
//会输出Hello
//world!
//案例5 对象中 从内存分析 为什么不一样
String sa =new String("Hello,world");
String sb=new String("Hello,world");
System.out.println(sa==sb);//false
?
String sc = "Hello,woeld";
String sd = "Hello,woeld";
System.out.println(sc==sd);//true
//案例6 布尔值拓展
boolean flag = true;
if (flag==true); //新手
if (flag); //老手
//代码要精简易读
?
}
}
?
数据转换
public class Demo04 {
public static void main(String[] args) {
//低-------------------------------高
//byte?
?
//案例1 强制转换是从高到低转 (类型)变量名 数值超过往小转的范围,会计算错误
int i =127;
byte b =(byte) i;
System.out.println(i);//127
System.out.println(b);//127
?
//案例2 自动转换是从低到高 直接输入变量名即可
int p =128;
double u = p;
System.out.println(p);//128
System.out.println(u);//128.0
?
//案例3 转换的时候可能存在内存溢出的,或精度问题
System.out.println((int)23.7);//输出为23,小数转没了
System.out.println((int)-45.89f);//输出为45,小数转没了
?
//案例4 a字符 没有转换+1=得出数字
char c = 'a';
int d =c+1;
System.out.println(c);//a
System.out.println(d);//98
?
//案例5 直接输出v,a字符转换+1=b
char f = 'a';
int v =f+1;
System.out.println(v);//98
System.out.println((char)v);//b
?
//案例6 操作比较大的数字的时候,注意溢出问题,需要在计算时就进行转换
//JDK7新特性,数字之间可以用下户线分割
int money = 10_0000_0000;
int yuars = 20;
int total = money*yuars;//-1474836480
System.out.println(total);
//如果转换成LONG会不会可以使用, long total1 = money*yuars; 结果是还是错误,因为转换前已经存在问题
// 正确是该在计算的时候就转换,正确如下
long total2 =money*((long)yuars);
System.out.println(total2)
?
?
}
}
?
注意事项
//不能对布尔值进行转换
//不能把对象类型转换成不相干类型
//再把低容量转换成高容量的时候,强制转换
?
?