2017.7.6  java 课堂笔记

1.关于分支;

if/else 是基于boolean
值的双分支

Switch  基于数字(包括整数 char byte  枚举, 字符串)类型的多分支

 方法 method

方法就是一个子程序Java中方法的命名规范 是驼峰命名法

Int add(int a,int b){

Int result =a+b;

return result;

}

float add(int a,int b){

}

float add(float a,float b
){

float result=a+b;

return result;

}

方法也是有类型的

1. 对于方法的使用者来说  返回值就是方法的类型

2.对于重载来说,方法的签名就是其类型

方法的签名; 方法的名字+参数类型 (多个  顺序严格)

方法的返回值类型不属于签名的一部分

签名不同才能重载!

3.对于Java8中的拉姆达表达式来说 方法的类型包括返回值类型(参数类型 (多个  顺序严格的))

方法的返回值有一个特殊类型 void   没有返回值  也就是方法中没有return语句

方法的参数传递时有两种传值形式   实际是有参数的类型的性质决定的

基本类型: 按值传递  把值复制到方法中

引用类型只是传递了对象的引用  如果方法中的对象发生了改变(内部属性)  就会影响这个对象

方法(包括面向对象) 都不是必须的!方法和mianxiangduixiang都是给程序设计人员使用的 所以要写代码 如果要定义方法 就要站在设计师的高度酒完成方法的设计。

设计必要性: 设计是有必要的  (有利于提升质量  可维护性 效率 重用)但是设计是无止境的   适可而止。

评价设计的优劣标准; 1.
简化  2.不要重复(消除重复代码)

提取方法:

日过一个方法 代码太多  职责太多则需要表示需要对这个方法进行重构
( Rafactor) 通常会使用  提取方法的功能  对职责进行分散

IDE 对此提供了  非常好的支持

举例 单位转换程序  所有的代码都可以写在main方法中 但是将调度职责和具体的转换职责进行拆分  将会是程序结构更加清晰  整个程序也会更加简单

Class UnitClac{

Static void main (String[]
args){

//进行转换调度

}

Static void c2f(Scanner
scanner){

// 将摄氏度转换为华氏度

}

Static void f2c(Scanner
scanner){

// 将华氏度转换为摄氏度

}

}

2.任何应用程都由应用交互逻辑业务逻辑两部分构成

交互逻辑可以随意改变
而且经常会随技术和流行趋势变化

业务逻辑相对稳定

交互逻辑通常围绕UI展开

业务逻辑通常围绕数据展开

具体来说 收集数据  存储数据
分析数据  展示数据

Static 方法没有充分体现面向对象的特征

对于static 方法来说 类只是一个盒子(容器)
static 方法与对象关系(实例)不大

程序调试   通过调试可以观察程序内部数据和人执行过程

调试是一个非常强打的能力   断电和单步执行是由CPU和JVM
联合支持

通过虫子图标可以进入调试模式  如果没有看到调试透视图  可以在右上角进行透视图的切换

加断点  让程序停留在短点的位置

单步执行 F5 /F6

F5 向上执行一句

F6  向下执行一句

调用栈  栈是只有一个口的容器  先进入的回落到栈底  弹出额时候最后弹出

最后进入的在栈顶  弹出时先弹出

方法调用时  需要在内存开辟一快存储空间  作为线程栈空间

每个线程都有自己的栈

调用方法时 会在栈中压入一个栈帧
用来存储这个方法的参数和局部变量

方法调用时 栈帧就会弹出
方法的参数和局部变量就会清除

方法调用时 调用栈不断处于涨落之中

如果调用的层级过深 调用栈就会溢出

因为代码执行的数据很快  所以栈帧的生存时间很短  瞬间生灭

所以局部变量无法被外部所使用

作业:

static void main(){

double a=3 ;

double  b=5;

double c=calcarc (3,5);

}

Static double calacar (double x,double y){

double m=pow(x);

double n=pow(y);

double o =m+n;

return sqrt(o);

}

 3.异常处理

程序执行时,遇到错误(调用栈中的错误)就会停止执行

如果错误数据不能清除掉  程序就无法恢复  最终崩溃  而Java等现代编程语言  普遍提供了清理错误数据的机制

异常处理

早期的C语言  等没有异常处理机制

在Java中有一类异常很特别  它们叫做受查异常

受查异常  必须传递出去(throws)   或者 处理掉(try/catch)不能不管

try{

}

当代吗执行到try时会建立一个安全点 一旦在try中发生错误
JVM就会检查并收集错误信息(错误的原因 错误的位置  当前调用栈的结构等) 然后利用这些信息  创建一个
excption 对象  (类型取决于错误原因)

然后抛出(throw)这个异常对象

异常对象的传播

当异常被抛出之后 JVM会沿着调用栈从上到下逐帧查找try
建立的安全点 直到找到一个符合条件的catch或者到达栈底

Catch(someTypeException ex){

// 清理

// 异常对象的使用

}

//从这里开始继续执行

异常的catch

catch是一个匹配的过程  只有类型匹配成功 才会接受(捕获)

否则继续沿着调用栈查找

当异常被处理 上面的栈帧就会被清除

如果在错误之前打开了 一个系统资源
则该资源就有可能没有正确的关闭

所以try/catch 之后可以写finally{    }

finally一定会被调用  用来关闭资源

try、catch、finally语句块的执行顺序:

1)当try没有捕获到异常时:try语句块中的语句逐一被执行,程序将跳过catch语句块,执行finally语句块和其后的语句;

2)当try捕获到异常,catch语句块里没有处理此异常的情况:当try语句块里的某条语句出现异常时,而没有处理此异常的catch语句块时,此异常将会抛给JVM处理,finally语句块里的语句还是会被执行,但finally语句块后的语句不会被执行;

3)当try捕获到异常,catch语句块里有处理此异常的情况:在try语句块中是按照顺序来执行的,当执行到某一条语句出现异常时,程序将跳到catch语句块,并与catch语句块逐一匹配,找到与之对应的处理程序,其他的catch语句块将不会被执行,而try语句块中,出现异常之后的语句也不会被执行,catch语句块执行完后,执行finally语句块里的语句,最后执行finally语句块后的语句;

异常对象中
包含的信息可以通过异常对象提供的方法获取到

getMessage()

getStackTrace()

printStackTrace 可以把异常信息打印到控制台或指定的输出流当中(保存成文件)

java 新手入门课程03的更多相关文章

  1. Java新手入门必须掌握的30个基本概念

    今天给大家推荐的文章是有关Java基本概念的,掌握好这些基本概念对学习J2SE.J2EE.J2ME都很重要,也能更好地理解Java的精髓,初学者要注意啦! ▶Java概述: 目前Java主要应用于中间 ...

  2. Java新手入门的30个基本概念

    Java已经成为一个庞大而复杂的技术平台,对于开发者而言,特别是刚開始学习的人,要想更好的掌握Java技术,深入理解基本概念不可缺少,能够帮助你提高对Java的进一步了解.以下为你介绍了Java语言的 ...

  3. java新手入门

    参考地址 java博客 1.jdk    安装 /usr/libexec/java_home -V   查询jdk的版本 2.tomcat  安装教程 配置 mkdir -p /Library/Tom ...

  4. 课程上线 -“新手入门 : Windows Phone 8.1 开发”

    经过近1个月的准备和录制,“新手入门 : Windows Phone 8.1 开发”系列课程已经在Microsoft 虚拟学院上线,链接地址为:http://www.microsoftvirtuala ...

  5. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观

    Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java  ...

  6. 009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量?

    009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量? 什么是变量? 形象化的生活中的例子理解什么是变量以及变量的三个元素 我们可以根据客人要求 ...

  7. 安卓自动化测试(2)Robotium环境搭建与新手入门教程

    Robotium环境搭建与新手入门教程 准备工具:Robotium资料下载 知识准备: java基础知识,如基本的数据结构.语法结构.类.继承等 对Android系统较为熟悉,了解四大组件,会编写简单 ...

  8. Docker新手入门:基本用法

    Docker新手入门:基本用法 1.Docker简介 1.1 第一本Docker书 工作中不断碰到Docker,今天终于算是正式开始学习了.在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少 ...

  9. 问题集录--新手入门深度学习,选择TensorFlow 好吗?

    新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...

随机推荐

  1. nginx反向代理压测问题记录

    使用nginx反向代理压测web程序,100个用户并发时,每隔一段时间loadrunner工具中就会报错,报错信息如下: Continuing after Error -26610: HTTP Sta ...

  2. vs2008 x64编译环境 忽略了 #ifdef WIN32

    解决方法: 右键项目属性,在预处理器中添加WIN32即可 效果:

  3. linux -- 查看Ubuntu命令行调用的文件

    which 如: 输入:which reboot 输出:/sbin/reboot 输入:which shutdown -h now 输出:/sbin/shutdown

  4. 2014Esri全球用户大会之影像和栅格

    1.现在Esri已将影像作为GIS解决方案的一部分,其详细战略部署是如何的? 在过去的十年.Esri有规划的在ArcGIS平台(主要为Desktop和Server)中管理和开发影像和栅格功能.这包含影 ...

  5. cake build使用:

    开源地址: https://github.com/cake-build/cake 依赖 powershell 3.0 Windows 获取引导程序: Invoke-WebRequest http:// ...

  6. thinkphp隐藏模块实例

    1.项目中若要隐藏模块的做法 2.配置如下: <?php return array( //'配置项'=>'配置值' 'MODULE_ALLOW_LIST' => array ('Ho ...

  7. 放在github pages上的静态网站怎么取消绑定自定义域名?

    使用GitHub Pages搭建的静态网站绑定了自定义域名操作,但是想反悔怎么办? 删除CNAME文件,重新删除仓库,新建后均不行~ 解决办法:清除一下浏览器缓存,或者用别的浏览器打开就好了,因为之前 ...

  8. IIS 使用多个https和通配证书解决方案

    环境:OS :WINDOWS 2008 IIS: IIS7 域名:三个二级域名 问题:由于一个网站只支持一个443,但可以通过更改配置得到绑定不同域名.但由于公用证书,所以问题出来.只能为一个二级域名 ...

  9. swif开发之--协议的使用

    以前在oc构建的项目中,如果这个页面需要构建一些指定的页面,一般我会重新创建个集成与UIView的类,然后同时创建XXX.xib文件,然后直接在上面拖拽控件,非常快速,当然也可以手动布局!个人更喜欢可 ...

  10. ZooKeeper(八)-- Curator实现分布式锁

    1.pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactI ...