Java基本语法(1)
注释
-
单行注释 //
-
多行注释 /* */
-
文档注释 //JavaDoc:文档注释
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dahi4DQN-1610950158142)(C:\Users\pc\Desktop\捕获.PNG)]
标识符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z78sfDg9-1610950158144)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210118093629684.png)]
给类名,变量名,方法名起名字不能用关键字
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-atWvhxbl-1610950158146)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210118093911832.png)]
数据类型
-
强类型语言(Java,C++,C)
一旦定义了一个变量,指定了它的数据类型之后,如果不经过转换的话,它就永远是这个类型
安全性高。但速度较慢
-
弱类型语言(JavaScirpt)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-adKPCyFd-1610950158149)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210118094836684.png)]
代码
//八大基本数据类型
//整数
int a = 4;
byte b = 127;
short c = 1;
long d = 2L; //long 类型要在数字后面加上L
//浮点数:小数
float e = 20.1F; //float类型要在数字后面加上F,若不加则小数默认为double类型
double f =20.1;
//字符 一个字,一个字母,一个数字
char name = '中';
char name1 = 'A';
char name2 = '1';
//字符串 String不是关键字,是一个类
String name3 = "小明";
//布尔值:表示是非对错
boolean flag = true;
// boolean flag = false;
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4uXbMnHi-1610950158150)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210118100916662.png)]
补充
public class Demo2 {
public static void main(String[] args) {
//整数拓展:进制( 二进制(数字的前缀为0b) 八进制(数字的前缀为0) 十进制(数字无前缀) 十六进制(数字的前缀为0x))
int i1 = 10;
int i2 = 0b10; //二进制,表示十进制2
int i3 = 010; //八进制,表示十进制8
int i4 = 0x10; //十六进制,表示十进制16 十六进制0~9 A~F
System.out.println(i1);
System.out.println(i2);
System.out.println(i3);
System.out.println(i4);
System.out.println("====================================");
//浮点数拓展
//面试题:银行业务怎么表示?钱?
//银行业务运用float,double是有问题的
//浮点数里面的骚操作
float f = 10.1F;
double d = 10.1/1;
System.out.println(f); //控制台输出为10.1
System.out.println(d); //控制台输出为10.1
System.out.println(f==d); //控制台输出为false 出现这个现象是因为浮点数表示的字长是有限的,离散的,存在舍入误差,结果为大约数
//最好不要用浮点数进行比较,存在误差,有时会存在错误
//最好不要用浮点数进行比较,存在误差,有时会存在错误
//最好不要用浮点数进行比较,存在误差,有时会存在错误
//用BigDecimal 数学工具类
System.out.println("====================================");
//字符拓展
char c1 = 'a';
char c2 = '中';
System.out.println(c1); //控制台输出a
System.out.println((int)c1); //强制转换,将char类型转换为int类型,控制台输出97
System.out.println(c2); //控制台输出中
System.out.println((int)c2); //强制转换,控制台输出20013
//所有的字符本质都是数字,
//用单引号表示字符常量,char类型涉及到编码问题 Unicode编码 2个字节 0-65536
//存在编码表 97->a
System.out.println("===========================================");
//转义字符
// \t 表示制表符table键
// \n 表示换行
//......
System.out.println("Hello\tWorld");
System.out.println("Hello\nWorld");
System.out.println("===========================================");
String sa = new String ( "Hello World");
String sb = new String ( "Hello World");
System.out.println(sa==sb);
String sc = "Hello World";
String sd = "Hello World";
System.out.println(sc==sd);
//学到对象的时候再从内存角度分析
System.out.println("===========================================");
//布尔值拓展
boolean flag = true;
if(flag==true){}
if(flag){}
//两者等价
}
}
类型转换
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m15IaQoZ-1610950158152)(C:\Users\pc\AppData\Roaming\Typora\typora-user-images\image-20210118131324609.png)]
运算中,不同类型的数据先转化为同一类型的数据再进行运算,从低到高进行转换
代码
public class Demo3 {
public static void main(String[] args) {
//强制转换:(类型)变量名 高到低
int i = 128;
byte b = (byte)i; //由于byte只能表示-128~127之间的数据,这里i=128超出byte的表示范围,会有内存溢出现象发生,最终控制台上显示随机数
System.out.println(i);
System.out.println(b);
//自动转换:低到高 自动转
double d = i;
System.out.println(d); //输出为128.0
/*
注意点
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.在把大容量转换为低容量时,要用强制转换,反之则不用,从低容量转换为高容量时,会进行自动转换
4.转换的时候可能存在内存溢出的情况,或者精度误差的问题
*/
//转换时存在精度问题
System.out.println("===================================");
System.out.println((int)23.8); //输出23
System.out.println((int)-56.98F);//输出-56 存在精度问题
System.out.println("===================================");
char c ='a';
int i2 = c+1; //这里c是char型,转到int型是低转高,自动转换
System.out.println(i2); //输出为98
System.out.println((char)i2); //i2为98,强制转换为char类型为b
}
}
注意点
public class Demo4 {
public static void main(String[] args) {
//操作比较大的数的时候,要注意溢出问题
//JDK的新特性,数字之间可以用下划线进行分隔,而且输出时下划线不会显示
int money = 10_0000_0000;
int years = 20;
int total = money*years;
long total2 = money*years;
System.out.println(total); //输出为-1474836480,因为计算的时候发生溢出
System.out.println(total2); //输出为-1474836480,因为money和years都是int类型,money*years算完之后已经默认是int类型了,也就是算出来已经是-1474836480了,即使最后转换成long类型了,结果也是错的。
long total3 = money*((long)years); //先把一个数转换为long类型,整个表达式都提升为long类型,就没有问题了
System.out.println(total3); //输出为200_0000_0000
//float和long后面要加上后缀,float后面要加上F或f,long后面要加上L或l,但是在代码里面小写的l和1 很像,容易弄混,所以后缀都用大写
}
}