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. ftp传输出现问题

    将文件打包压缩之后,从ftp服务器下载到本地,进行解压,出现下面的问题. 原来是传输文件的时候是默认按照netascii的格式进行传输的,没有按照二进制文件的形式传输. 再传输之前,使用bin指定传输 ...

  2. tftp32作为dhcp服务器

    /******************************************************************* * tftp32作为dhcp服务器 * 每次使用tftp进行文 ...

  3. IoC最大的好处是什么?

    IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般这样的对象都是实现于某种接口的),只要修改XML就可以了,这样我们甚至可以实现对象的热插拨(有 ...

  4. par函数usr参数-控制坐标系的范围

    在R语言中,会根据数据的范围自动计算x轴和y轴的范围,举个例子 比如绘制一个1到5的散点图:代码示例: plot(1:5, 1:5) 生成的图片如下: 从图片中我们可以看到,x轴的起始位置比1要小,终 ...

  5. struts2将数据通过Json格式显示于EasyUI-datagrid数据表格

    1.搭建ssh开发环境 2.写好Dao.service等方法 3.建立DTO数据传输对象: package com.beichende.sshwork.user.web.dto; import jav ...

  6. linux常用命令中篇

    1.打印当月的日期

  7. (转)Spring开启Annotation<context:annotation-config> 和 <context:component-scan>诠释及区别

    转自:https://www.cnblogs.com/leiOOlei/p/3713989.html <context:annotation-config> 和 <context:c ...

  8. jQuery-理解选择结果

    使用$函数选择元素返回的是一个对象,可以称这个对象为jQuery对象,在jQuery执行一些操作的时候很多情况下都是返回的jQuery对象. jQuery中常用处理结果集的方法和属性 表达式 例子 说 ...

  9. Oracle中查询主键、外键、sequence、表基本信息等

    一次看到某张表中有几条ID相同的数据,通过业务确认该ID应该是唯一的,后来找到原因,因为DBA未对该表建主键. 现在DBA工作比较忙,我们项目有时需要新增或者修改数据库表结构时,可能需要对表结构进行确 ...

  10. 下次不用找了,all language code

    语言 ID 语言 ID 决定网站中网页文本(例如“网站设置”页上的文本)使用的语言.创建网站时可用的语言取决于在服务器或服务器场中安装的语言模板包.基于 Windows SharePoint Serv ...