文章目录
Java学习
small tips
-
jdk=jre+java开发工具,jre=jvm+java核心类库
-
在控制台,按tab可以实现自动补齐
-
javap->反编译,在D:\MYjdk\bin下查看,可以对给定的.class文件提供字节代码的反编译
使用格式:javap -c -v 类名
eg: javap Dog.class(.class可以省略不写)
-
.java是源文件
-
.class是字节码文件,也即编译后形成的文件
-
在Java中,只要有一个类,那么编译后就一定会生成相应的.class文件
如果存在公有类public类,那么这个文件必须一3该类的名称命名(因为是公有的,那么就不能私人化)
-
main方法也可以写在非public类中,只要有main发入口即可,执行的话可以直接用Java+类名来执行
-
Java编程的规范可参考《阿里巴巴编程手册》
-
相对路径和绝对路径 (javaSE中的)
相对路径:从当前目录开始定位形成的路径(不带盘符)
绝对路径:从顶级目录开始定位形成的路径(有盘符)
转义字符:
-
转义字符是针对于英文字符的,因此中文的可以直接使用
-
\t 实现对齐功能
-
\n 换行
-
\ 输出一个\(如果想要输出一个路径,其中必须要\才能输出一个\,ps如果是要两个\,那么就要\\才行)
-
" ’ 输出单引号和双引号,并且此时必须是英文符号
数据类型tips
浮点数的小陷阱
double num1 = 2.7;
和double num2 = 8.1/3;
是不相等的,因为实质上是先把十进制转化成二进制再做运算,但这样必然不准确的,so,不要用两个浮点数进行比较大小的操作
正确的做法可以是计算两个数的差值的绝对值,在某个精度内就可以了,比如if(Math.abs(num1 - num2)<0.001);
这就可以了,相当于是相等了
char 字符类型
可存放一个字母,转义字符,一个汉字,数字,但是如果char = 97;
输出的时候,输出的其实是a,因为97在char中对应的是ASCII码对应的a(编码的概念),汉字同理,因为有自己的编码所以可以存储汉字
字符的细节:
1.只能用单引号,不能用双引号
2.Java中,char的本质是一个整数,在输出时会编程Unicode码对应的字符
因此char类型是可以做运算的,并且自动换成int类型
字符的本质探讨
char存储到计算机中需要把字符对应的编码转换成二进制,才能存进去
自动类型转换
有多种类型的数据混合运算时,系统会自主将所有数据转换成容量最大的类型
此处提醒,浮点数在Java中默认double型!!!
char和byte和short不会自动转换
类型转换的陷阱
short i = 12;
i = i-9;
这是错误的,i-9已经是int类型,无法赋值给short
基本数据类型和String的转换
- 基本数据类型 → String
格式:String s1 = n1 + "";
也就是基本数据类型加上""即可
- String → 基本数据类型
需要使用包装类的调用:parsexxx
- eg:
String s2 = "100";
int n2 = Integer.parseInt(s2);//Integer是一个类,parsexxx是其中一个方法
注意:字符串转成字符没有上述方法,而是逐步取出字符的过程
s1.charAt(0)
代表着s1字符串的第一个字符
常识
++ 和 –
- int i = 1;
i++;
System.out.println("i = "+i);
会输出:11
但是作为表达式使用,加号在前先加后赋值,加号在后先赋值再加
int j = 8;
int k = ++j;//此时j,k都是9
int j = 8;
int k = j++;//k = 8,k = 9
短路与&&和短路或|| [ 效率高 ]
短路与:如果第一个条件为false那么不判断了直接false
简单直白来说就是&&有错误就停止,&有错误还要把后面没有执行的给跑完
标识符命名规范
-
包名:全部小写,网址倒着写
-
类名,接口名:所有单词首字母大写
-
变量名,方法名:第一个单词小写,后面的单词首字母大写
-
常量名:全大写,可以用下划线
键盘输入
import java.util.Scanner//导包
SCanner myScanner = new Scanner(System.in);//myScanner相当于定义了一个类?
String s = myScanner.next()//使用了myScanner类中的next方法
int n = myScanner.nextInt()//输入int
double d = myScanner.nextDouble()//输入浮点数
但千万要定义数据的类型
for循环的小细节
for(int i = 1;i <= 10;i++)
此处的i只作用于for循环,在循环外面使用就会报错
打印金字塔:外层控制层数,内层控制每层的个数
建议不要使用太多层的嵌套循环,两层最多了
编程思想(技巧)
-
化繁为简:即将复杂的需求,拆解成简单的需求,再逐步完成
-
先死后活:先考虑固定的值,再考虑灵活的值
数组的使用细节
-
一个数组内的数据只能是同一个类型的
-
数组中的元素可以是任何数据类型,基本数据类型或者引用数据类型,但不能混着来
-
在数组中,只要分配了空间就一定会有地址
-
数组名在栈里,对应的地址在堆里