java 新手入门课程03
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的更多相关文章
- Java新手入门必须掌握的30个基本概念
今天给大家推荐的文章是有关Java基本概念的,掌握好这些基本概念对学习J2SE.J2EE.J2ME都很重要,也能更好地理解Java的精髓,初学者要注意啦! ▶Java概述: 目前Java主要应用于中间 ...
- Java新手入门的30个基本概念
Java已经成为一个庞大而复杂的技术平台,对于开发者而言,特别是刚開始学习的人,要想更好的掌握Java技术,深入理解基本概念不可缺少,能够帮助你提高对Java的进一步了解.以下为你介绍了Java语言的 ...
- java新手入门
参考地址 java博客 1.jdk 安装 /usr/libexec/java_home -V 查询jdk的版本 2.tomcat 安装教程 配置 mkdir -p /Library/Tom ...
- 课程上线 -“新手入门 : Windows Phone 8.1 开发”
经过近1个月的准备和录制,“新手入门 : Windows Phone 8.1 开发”系列课程已经在Microsoft 虚拟学院上线,链接地址为:http://www.microsoftvirtuala ...
- Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
Java 入门课程视频实战-0基础 已经上传完了.欢迎小伙伴们过来围观 直接进入: http://edu.csdn.net/course/detail/196 课程文件夹例如以下: 1 初识Java ...
- 009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量?
009 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 03 什么是变量? 什么是变量? 形象化的生活中的例子理解什么是变量以及变量的三个元素 我们可以根据客人要求 ...
- 安卓自动化测试(2)Robotium环境搭建与新手入门教程
Robotium环境搭建与新手入门教程 准备工具:Robotium资料下载 知识准备: java基础知识,如基本的数据结构.语法结构.类.继承等 对Android系统较为熟悉,了解四大组件,会编写简单 ...
- Docker新手入门:基本用法
Docker新手入门:基本用法 1.Docker简介 1.1 第一本Docker书 工作中不断碰到Docker,今天终于算是正式开始学习了.在挑选系统学习Docker以及虚拟化技术的书籍时还碰到了不少 ...
- 问题集录--新手入门深度学习,选择TensorFlow 好吗?
新手入门深度学习,选择 TensorFlow 有哪些益处? 佟达:首先,对于新手来说,TensorFlow的环境配置包装得真心非常好.相较之下,安装Caffe要痛苦的多,如果还要再CUDA环境下配合O ...
随机推荐
- Maven学习日记(一)----构建web项目
创建maven-web项目: dos进入workspace目录: D:\workspace>mvn archetype:create -DgroupId=org.sonatype.mavenbo ...
- 基于jQuery的计算文本框字数的代码-jquery
用户边输入计算同时进行,告诉用户还剩余多少可输入的字数,当超过规定的字数后,点击确定,会让输入框闪动 一.功能: 1.用户边输入计算同时进行,告诉用户还剩余多少可输入的字数; 2.当超过规定的字数 ...
- ubuntu下使用VI编辑文件必知的常用命令
进入vi的命令 vi filename :打开或新建文件,并将光标置于第一行首 vi +n filename :打开文件,并将光标置于第n行首 vi + filename :打开文件,并将光标置于最后 ...
- MVC下载远程文件流(WebClient)
public ActionResult DownLoad_File() { return File(ScLiu(PathUrl), "application/octet-stream&quo ...
- memcached +mysql+php 例子
<?php header("content-type:text/html;charset=utf-8"); $memcachehost = '127.0.0.1'; $mem ...
- CentOS7忘记root密码的解决方法
开机启动centos 7.0,看到如下画面,选择下图选单,按"e"键 在下图linux16行中,将ro这两个字母修改为rw init=/sysroot/bin/sh 修改结果如下图 ...
- java web - 为什么要使用spring struts
1.软件里有很多优秀的框架,有一种类型的框架,它的特点是建立在一个现有技术的基础上,提供和现有技术一样业务功能的技术框架,这个新的技术框架比原技术更加易用,更加健壮同时功能更加强大,例如:jQuery ...
- 【View】之【SimpleWaveView】可多色可刷新的加速球、进度球【demo】
当前版本:SimpleWaveView_v1.0.20140618 先看效果图,这个加速球是动态的,并且当调用了myView.setRefresh(0.8F);方法后可以从当前值动态降到0再升到80% ...
- RedisTemplate实现事物问题剖析和解决
一.问题描述 Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,Redis对事物支持不会很复杂,当一个客服端连接Redis服务时,发出了MULTI命令时,这个连接会进入事物,在执行MU ...
- MFC 小知识总结五
1 移动无标题对话框 响应WM_NCHITTEST 消息 [cpp] view plaincopy LRESULT CTimeJishiDlg::OnNcHitTest(CPoint point) ...