java基础
1、编译与运行
编译:是指将我们编写的Java源文件翻译成JVM认识的class文件,在这个过程中, javac 编译器会检查我们所写的程序是否有错误,有错误就会提示出来,如果没有错误就会编译成功。
运行:是指将 class文件 交给JVM去运行,此时JVM就会去执行我们编写的程序了。
2、初识main方法
main方法:称为主方法。写法是固定格式不可以更改。main方法是程序的入口点或起始点,无论我们编写多少程序,JVM在运行的时候,都会从main方法这里开始执行。
深入理解main方法:
为什么main方法要这样写:public static void main(Stringll] args)
1.public:访问权限修饰符,表示公共的。由于JVM要调用类的main()方法,所以访问权限需要足够大。
2. static:表示静态的,java虚拟机在执行main()方法时不必创建对象,为方便被JVM调用,所以该方法必须是static
3. void:被JVM调用,不需要给JVM返回值。
4. main():一个通用的名称,常见的方法入口,虽然不是关键字,但是被JVM识别。
5. 该方法接收String类型的数组参数,该数组中保存执行java命令时传递给所运行的类的参数
6. java执行的程序 参数1 参数2 参数3
案例演示,接收参数:
- main方法命令行传参
格式:java 类名 字符串
用命令行给main方法传参:在命令行中,通过javac命令编译java文件之后,使用java 命令运行Java文件时,可以直接在文件名后面添加参数,一般用于jvm调优
2. main方法IDEA传参
java执行的程序参数1参数2参数3
3、关键字与标识符
1.关键字
概述:被Java语言赋予特定含义的单词
特点:组成关键字的字母全部小写
注意事项:
(1)goto和const作为保留字存在,目前并不使用
(2)会被IDE用颜色标识
2.标识符
概述:给类、接口、方法、变量、常量等起名字时使用的字符序列
组成规则:
(1)英文大小写字母
(2)数字
(3)$
和_
4、基本数据类型
基本数据类型只有八种,其他都是引用类型:
⑴整型 表示整数 二进制最高位是符号位
byte 8bit
short 16bit
int 32bit
long 64bit
⑵字符型(char) 表示文字或符号 16bit
⑶浮点型 表示小数 二进制最高位是符号位
float 32bit,小数点前占九位
double 64bit小数点前占十二位
⑷boolean型 表示真假
字符类型用单引号括起来,有且仅有一个字符,必须是一个,不能多不能少,所有的字符本质上都是数字
小技巧:
- 写代码时要考虑代码可读性、健壮性(严谨) 写完要优化代码(冗余 结构 效率 内存 复用性 可扩展性)
- 最好完全避免使用浮点数进行比较,如果要比较两个数,最好用整数或者用 BigDecimal类比较
链接:Java之BigDecimal详解
public static void main(String[] args) {
// 输出123 jdk7新特性:数字之间可以用下划线分隔,并不会输出下划线
System.out.println(1_2_3);
}
5、引用数据类型
jdk中的类(class)、数组(Array)、接口(interface)、注解(@interface)、枚举(enum),每一种基本数据类型都有对应的引用数据类型,里面封装了基本数据类型操作的常量和方法,首字母大写(int—>Interger ; char----->Character)
6、方法五要素
访问修饰符、返回值类型、方法名(参数列表){方法体代码块}
7、递归
- 自己调用自己,直到满足条件。出口就是条件,要有递归出口,逐步向出口逼近(
没有出口将出现无限递归,直接栈溢出
)- 能够不用递归就尽量不用递归,小计算可以用递归,如40以下的,多了会卡
public int sum(int a){
If(a==1){
return 1;//出口,递归头
}else{
return a+sum(a-1);//循环体,递归体
}
}
//斐波拉契数列:1 1 2 3 5 8 13......
public int fid(int month){
If(month==1||month==2){
return 1;
}else{
return fid(month-1)+fid(month-2);
}
}
在计算fid(month-1)+fid(month-2);时,可以先计算单边的,如先计算fid(month-1),直至计算出结果,返回结果后再计算fid(month-2)的值,返回最终结果,如果没有正确的出口条件,将产生无穷递归
如何使用递归?
- 当需要解决的问题可以拆分成若干个小问题,大小问题的解决方式相同。
方法中自己调用自己
- 使用循坏解决的常规问题