前言:这些是我跟着我学习的时候觉得对自己以后复习和对刚入门java的人觉得有用的干货分享!--------古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
注释(Comments)
-
单行注释: // 只能注释一行内容
-
多行注释: /* */ 可以注释一段内容
-
文档注释(JavaDoc): /** / 在这里面可以写出你的文本内容,你也可以学一些关键词 @开头,往后面添加 东西 ,但是这个文档注释对如我们初学java的人基本不会用到,当你进到公司里面的话才会用到,所以对于初学者只需要把单行注释(//)和多行注释(//)灵活的运用就行了*
对于注释的总结
- 注释并不会被执行,是写给我们写代码的人看的
- 书写注释是一个非常好的习惯
- 平时写代码一定要注意规范,养成良好的习惯
标识符
- 关键字
- java所有的组成部分都需要名字 类名,变量名以及方法名都被称为标识符
- 所有的标识符都必须以 字母(a~z A~Z) 美元符($)、下划线(_)开始
- 不能使用关键字作为变量名或者方法名
- 标识符是大小写敏感的
- java不同于c的一点居然还可以用中文命名,这一点也算是我新学的吧
数据类型
-
java数据类型分为两大类
- 基本类型(primitive type)
- 引用类型(reference type)
// 八大基本数据类型 //整数 byte num1=10; (1byte) short num2=20;(2byte) int num3=30; (最常用)(4byte) long num4=40L; (long 类型要在数字后面加一个L)(8byte) //小数 浮点数 float num5=40.3F; (这里也要加一个F,表示是float类型和double区分)(4byte) double num6=3.14165926;(8byte) //字符 char num7='A';(2byte)(注意,这里要和c语言区分,c语言中char占一个字节) //布尔值(只要false和true两个值) boolean num8=false;(1byte) boolean num9=true;(1byte)
- 注意 String不是数据类型,是一个类
-
整数的拓展-----进制
- 二进制 0b
- 十进制
- 八进制 0
- 十六进制 0x 0~9 A~F(10 11 12 13 14 15)
-
浮点数拓展 银行业务怎么表示? 钱
-
经典面试题
float a1=0.1f;
double a2=1.0/10;
System.out.println(a1 == a2);
//这个输出的答案是 false
float a1=2222223542135135f;
float a2=a1+1;
System.out.println(a1 == a2);
//这个答案是 true
//为什么会出现这个现象? 通过这个题我们可以得知float类型的特征:
//有限 离散 舍入误差 大约 接近但不等于
//多以对于浮点数的比较我们一般不直接去比 ,而使用BigDecimal数学工具类比较
- 字符拓展
char c1='a';
char c2='中';
System.out.println((int)c1);
System.out.println((int)c2);
//输出结果 97 20013 这里用到了强制类型转换,并引出一个结论
//所有的字符本质还是数字
//编码Unicode表 2字节 0~65536 U0000~UFFFF
-
转义字符
- ‘\t’ 制表符 相当于Tab的效果
- ‘\n’ 换行符 相当于回车的效果
-
拓展知识(先了解)
String s1=new String("hello,world"); String s2=new String("hello,world"); String s3="hello,world"; String s4="hello,world"; System.out.println(s1==s2); System.out.println(s3==s4); //输出的结果为 false true //这些都是涉及底层的知识,先了解即可
- 布尔值扩展
boolean flag1=true; if(flag1==true){}; if(flag1){}; //这两种写法其实一样,一般新手喜欢写第一种,老手喜欢写第二种 //Less is More! 以后写代码要简单易读
类型转换
-
转换分为:
- 强类型转换
- 自动类型转化
-
由于java是强类型语言,所以要进行有些运算时,需要用到类型转换
-
不能对布尔值转换
-
再把高容量转化为低容量时强制转换
-
转换的时候可能出现内存溢出,或者精度问题
int b1=128;
byte a1=(byte)b1;
System.out.println(a1);
// 输出的结果是 -128 因为byte的范围是 -128~127 所以把128强转为byte类型会内存溢出
- 操作数较大的时候,容易出现溢出问题(大多数人经常跳的坑!!!)
// JDK7的一个新特性 数字之间可以用下划线分割 并且输出的结果不会有影响
// int a=10_0000_0000; (不会报错 输出时下划线不会被输出出来)
//For Example:
int a=10_0000_0000;
int b=20;
int c=a*b;
System.out.println(c);//答案是:-1474836480 一个负数,并不是我们想象的20亿 这就是溢出int的范围了
//有的人碰到这种错误可能第一时间会想到自己的解决方案,就是把int改为long,以为这样就正确了
long c=a*b;
System.out.println(c);//答案是:-1474836480 还是一个负数,这是因为a和b先进行计算然后再进行转化,
//在计算的时候默认为int类型,所以直接溢出,转化的时候是吧溢出的那个结果转化给了long,所以还是报错的
//解决方案
long c=b*((long)a); //在计算的时候就先把a转化为long类型就可以避免了
总结
首先我感觉我总结的这些知识点对我自己来说时非常有帮助的,我感觉这些都是我收获比较大的。因为我之前已经学过c语言了。以上是我学习java的时候觉得容易出错的地方,我感觉这对初学者,新手,或者老手都很有帮助把,这些都是一些细节性常犯的错误,希望大家看一遍都能够记住自己觉得有用的东西,希望对大家有帮助把!如果觉得够干的话,点个赞关注一下吧!我会一直持续分享的,后面我也会把我学c过程中总结的知识点超详细的总结出来分享给大家!!!希望我们这些小伙伴们共同进步吧!