If/else :基于boolean值的双分支java
Switch:基于数字(整数、char、byte、枚举)、字符串编程
类型的多分支安全
Int month =5;编程语言
Switchide
Java中方法的命名规范是驼峰命名法。spa
int add( int a, int b ){线程
int result = a + b;设计
return result;调试
}对象
float add( float a, float b){
float result = a + b;
return result;
}
对于方法的使用者来讲,返回值就是方法的类型
对于重载来讲,方法签名就是其类型
方法签名:方法的名字+参数类型(多个,顺序严格的)
方法的返回值类型不属于签名的一部分
//这两个方法的方法签名相同,所以传的参数不知道调用哪个方法,没法肯定返回类型。
int add( int a, int b ){
int result = a + b;
return result;
}
float add( int a, int b ){
int result = a + b;
return result;
}
签名不一样才能重载!!
Tips:
1>对于java8中的拉姆达表达式来讲,方法的类型包括
返回值类型->(参数类型<多个,顺序严格的>)
2>方法的返回值有一个特殊的类型void,、
没有返回值,也就是方法中没有return语句
3>方法的参数传递时有2种传值形式,实际是由参数的类型的性质决定的。
基本类型:按值传递,把值复制到方法中
引用类型:只是传递对象的引用,若是在方法中改变了对象(内部属性),就会影响这个对象
4>方法(包括面向对象)都不是必须的!方法和面向对象都是给程序设计人员使用的。因此写代码时,若是要定义方法,就是站在设计师的高度去完成方法的设计。
若是一个方法代码太多,指责太多,则表示须要对这个方法进行重构(Rafactor)。一般会使用提取方法的功能智能进行分散
IDE(Ecllipse)对此提供很是好的支持
举例:单位转换程序,因此的代码均可以写在main方法中。可是将调度职责和具体的转换职责进行拆分,将会使程序结构更加清晰。整个程序也会更加简单。
public Class UnitClac{
//交互逻辑
static void main(String[] args){
//进行转换调度
}
//业务逻辑
static void c2f(Scannerscanner){
//将摄氏度转换为华氏度
}
static void f2c(Scannerscanner){
//将华氏度转换为摄氏度
}
}
任何应用都由应用交互逻辑和业务逻辑2部分构成。
交互逻辑能够随意改变,并且常常会随技术和流行趋势变化。
业务逻辑相对稳定。
交互逻辑一般围绕UI展开。
业务员逻辑一般围绕数据展开
具体来讲就是收集数据、存储、分析、展现数据。
Static (静态的)方法没有充分体现面向对象的特征。
对于static方法来讲,类只是一个盒子(容器),static方法与对象(实例)关系不大。
经过调试能够观察程序的执行过程和内部数据
调试是一个很是强大的能力(断点和单步执行是由CPU和JVM联合支持的)
经过“虫子”图标能够进入调试模式,若是没有看到调试视图,能够在右上角进行透视图的切换
加断点:让程序停留在断点的位置
单步执行:F5/F6
F5:进入方法
F6:越过方法
先入后出
栈是一个只有一个口的容器,先进入栈的会落到栈底,出栈的时候最后出。最后进入栈的,在栈顶,出栈时先出。
方法调用时,须要在内存中开辟一块存储空间作为线程栈空间
每一个线程都由本身的栈
调用方法时,会在栈中压入一个栈帧,用来存储这个方法的参数和局部变量
方法返回时 ,栈帧就会弹出,方法的参数和局部变量就会清除
方法调用时,调用栈不断处于涨落之中
若是调用的层级过深,调用栈可能会溢出
由于代码执行的速度很快,因此栈帧的生存时间很短,瞬间生灭
因此局部变量没法被外部使用
程序执行时,遇到错误(调用栈中的错误)就会中止执行,若是错误数据不能清除掉,程序就没法恢复,最终崩溃。
而java等现代编程语言广泛提升了清理错误数据的机制
异常处理
早期的c语言没有异常处理机制
在java中,有一类异常很特别,它们叫作受查异常
受查异常必须传递出去(thows)或者处理掉(try/catch),不能无论
try(){
}
当代码执行到try时,会创建一个安全点,一旦在try中发生错误
JVM就会检查并收集错误信息(错误的缘由、错误的位置、当前调用栈的结构等)
而后利用这些信息建立一个Exception对象(类型取决于错误缘由)
而后抛出(throw)这个异常对象
异常对象的传播当异常被抛出throw以后,JVM会沿着调用栈从上往下逐帧查找try创建的安全点,直到找到一个符合条件的catch或者到达栈底(崩溃)
Catch (SomeTypeException ex){
//清理
//异常对象的使用
}
//从这里继续执行
异常的catch
Catch是一个匹配的过程,只有类型匹配成功,才会接受(捕获),不然继续沿着调用栈查找。
当异常被处理后,上面的栈帧就会被清除
若是在错误以前打开了一个系统资源,则该资源就有可能没有正确地关闭,全部try catch后面能够写finally{ }
finally必定会被调用,能够用来关闭资源。
异常对象中包含的信息能够经过异常对象提供的方法获取到
getMessage()
getStackTrace()
printStackTracd() 能够把异常信息打印到控制台或指定的输出流中(保存成文件等)
1.画一个调用栈来表示多层方法调用的过程
static void main(){
double a = 3;
double b =5;
double c = calcArc(3,5)
}
static double calcArc(double x, double y){
double m = pow(x);-+
double n = pow(y);
double 0 = m+n;
return sqrt(o);
}
2.Square类 a边长
Rectangle类 a,b长宽
Circle 类 r半径
Sidelength()周长
3.画一个异常传播的示意图