常用类 枚举 异常 Math tcp与udp

常用类 枚举 异常  Math tcp与udp

异常:程序中出想不正常的情况。

因为面向对象,所以JAVA把异常处理也进行封装,

- throwable :

Error:运行中出现的严重错误,不需要我们进行更改。

Exception:运行中的不严重的错误,我们可以尝试解决。

Exception :

编译时异常:

运行时异常:RuntimeException

系统异常:已存在的;如数组越界

自定义异常:自己写

原理:

1. 在异常地方,生成异常类对象,但这里没有处理异常的能力,往上抛。当到了main时,也没有处理异常的能力,也继续往上抛,抛给JVM。此时JVM会调用异常类,将异常的信息打印。

2. 当程序中有多个异常的时候,只执行第一个,因为程序中断,

处理异常的手段

当个异常:

1. catch会对try里面的代码进行监听,如果try里面的代码发生了异常,catch会立即捕获(处理之后,会执行后续的代码)

2.代码示例:

try{

可能发生异常的代码

}catch(Exception  e){ //捕获异常    e就是要捕获的异常

对当前异常的处理

}

public class Demo3 {

public static void main(String[] args) {

Math1 math = new Math1();

try {

int value = math.div(3, 0);//3.这里也没有处理异常的能力,继续往上抛

//注意:只要try内部的代码发生了异常,catch会立刻捕获异常,马上执行catch,所以发生异常后的代码不会执行.

//只有try里面的代码没有发生异常,这里的代码才能执行

System.out.println(“haha:”+value);

}catch (Exception e) {//e = new ArithmeticException()    多态

//对异常进行处理

//e.printStackTrace();//打印异常的位置,原因,名字

//System.out.println(e.getMessage());//打印原因

System.out.println(e.toString());//打印原因,名字

}

System.out.println(“go on”);

}

}

class Math1{

public int div(int a,int b) {//2.div方法也没有处理异常的能力,继续往上抛

return a/b;//1.会自动生成一个异常类对象(new ArithmeticException()) ,这里没有打印的能力,程序会将异常抛出,抛给

//他所在的方法

}

}

多个异常:

1.try–catch–catch:

2.代码示例:

try{

可能发生异常的代码

}catch(异常一  e){ //捕获异常    e就是要捕获的异常

对当前异常的处理

}catch(异常二  e){ //捕获异常    e就是要捕获的异常

对当前异常的处理

}catch(Exception  e){ //捕获异常    e就是要捕获的异常

对当前异常的处理

}

问题:为什么不直接在catch里面直接写Exception e?

因为捕获异常要进行处理,不同的异常会有不同的处理方式,所以Exception必须加在最后。

finally:必须执行的代码:

1.当你把函数结束时(return),finally还会执行。

2.system.exit(0);,finally不会执行。

区别 try-fianlly:这个结构跟异常没有关系

try{

获取资源

}finally{

释放资源

}

自定义异常:(本质就时if判断);由于Exception已经有了异常的基本功能,所以一般写的是他的子类。(编译时用的最多)

- 步骤:

1.创建异常类

2.异常对象的创建

3.异常对象的抛出(throw)创建抛出对象,发生异常的代码

4.异常的声明:(throws)可能发生异常 ,在方法中声明异常

class FuShuException extends Exception{

public FuShuException() {

// TODO Auto-generated constructor stub

}

public FuShuException(String message) {

//这行代码必须写

super(message);

}

}

public class Demo6 {

public static void main(String[] args) //throws FuShuException

{

Math4 math4 = new Math4();

//第一种方式:继续向上抛,最后交给JVM

//math4.div(3, -2);

//第二种:tryCatch

try {

math4.div(3, -2);

} catch (Exception e) {

e.printStackTrace();

}

}

}

class Math4{

//声明异常,告诉别人我是有可能发生这个异常.

//当需要声明多个异常的时候,直接用,隔开

public int div(int a,int b) throws FuShuException

{

if (b < 0) {

throw new FuShuException(“除数为负数了”);

}

return a/b;

}

}

为了解释FuShuException构造方法中的参数如何在打印方法中显示?

public class Demo7 {

public static void main(String[] args) {

Teacher teacher = new Teacher(“除数为负数了”);

teacher.printStackTrace();

}

}

class Person{//相当于Exception

private String message;

public String getMessage() {

return message;

}

public void setMessage(String message) {

this.message = message;

}

public Person() {

super();

// TODO Auto-generated constructor stub

}

public Person(String message) {

super();

this.message = message;

}

public void printStackTrace() {

System.out.println(this.getMessage());

}

}

//相当于FuShuException

class Teacher extends Person{

public Teacher() {

}

public Teacher(String message) {

super(message);

}

}

调用异常方法时:可以声明异常(throws),也可以捕获异常(try-catch)

模板设计模式:(基于抽象类的设计模式)把功能分为2块,一块 是确定的,另一块 是不确定的,将确定的部分交给当前类实现,将不确定的部分交给子类实现.子类实现的结果又会反过来影响确定部分的功能。

原理:在模板方法中定义一个算法的步骤,并允许子类为一个或多个步骤提供具体实现

public class Demo9 {

public static void main(String[] args) {

//测试

Zi zi = new Zi();

long value = zi.getTime();

System.out.println(value);

}

}

abstract class Fu{

abstract public void function();

public long getTime() {

//开始时间

long startTime = System.nanoTime();//获取的系统时间,单位纳秒

//程序运行的时间

function();

//结束时间

long endTime = System.nanoTime();

return endTime-startTime;

}

}

class Zi extends Fu{

public void function() {

for (int i = 0; i < 10; i++) {

System.out.println(“i:”+i);

}

}

}

get/post:get–在网站上会有输入的名字;post----不会有名字

包装类 父类就是Number

为什么要有包装类?

1.为了集合的使用,因为集合存储是对象。

2.方便进行进制转换,        //Integer.parseInt(数据,进制)

3.基本数据类型和字符串转换

拆箱和装箱:

1.拆箱:从包装类对象中取出简单数据类型

int value1 = integer1.intValue();

float value2 = integer1.floatValue();

2.装箱:简单数据类型转换程对应的对象

int a = 5;

Integer integer1 = new Integer(a);

从jdk1.5开始可以实现自动拆箱,装箱

Integer integer2 = new Integer(4);

Integer integer3 = integer2+2;//进行了自动拆箱,取出了4,然后跟2相加得到6.又进行的自动装箱

System.out.println(integer3);

注意1:在一个字节范围内前面定义好的,后面再定义,直接使用前面的

Integer integer4 = 100;

Integer integer5 = 100;

System.out.println(integer4 == integer5);//true

注意2:如果超过了一个字节的范围,就认为是两个数,要独立占用两块儿内存空间.

Integer integer4 = 1000;

Integer integer5 = 1000;

System.out.println(integer4 == integer5);//false

枚举 enum

- 默认对应的是数字,数字从0开始计数

举例:

enum EnumTest{

First,

Second,

Third,

Fourth,

Fifth,

Sixth

}

public class Demo12 {

public static void main(String[] args) {

EnumTest test = EnumTest.Fifth;

System.out.println(test.compareTo(EnumTest.First));

switch (test.compareTo(EnumTest.First)) {

case -1:

System.out.println(“不相等”);

break;

case 0:

System.out.println(“相等”);

break;

case 4:

System.out.println(“不相等”);

break;

default:

System.out.println(“hah”);

break;

}

System.out.println(EnumTest.First);

System.out.println(test.getDeclaringClass().getName());

System.out.println(test.name());

System.out.println(test.toString());

System.out.println(test.ordinal());

}

}

JDK1.5之前没有没有枚举类型

Math:装的是用于数学的计算方法

public class Demo13 {

public static void main(String[] args) {

System.out.println(java.lang.Math.abs(-10));//绝对值

System.out.println(java.lang.Math.cos(3.14159));//三角余弦

System.out.println(java.lang.Math.ceil(3.4));//向上取整

System.out.println(java.lang.Math.floor(3.4));//向下取整

System.out.println(java.lang.Math.random());//随机数  [0,1.0)

//求[0,10)之间的整数

System.out.println((int)java.lang.Math.floor(java.lang.Math.random()*10));

Random类

//求[0,10)之间的整数

Random random = new Random();

System.out.println(java.lang.Math.abs(random.nextInt()%10));

System.out.println(random.nextInt(10));//直接获取的是[0,10)之间的数

}

}

##  TCP传输的是流 安全性高,面向连接,UDP 面向无连接,安全性低,传输的是包

应用层,表示层,会话层,传输层,网络层,数据链路层,物理层

数据链路层:它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。

传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值