JavaSE学习总结

前言:在学习Java之前,我认真的学完了C语言。现在花了两个月,学习javaSe,才深刻体会到C语言的重要性,C语言就是各个语言的基础,现在觉得他非常重要,学好C,你去接触一门新语言,你会觉得很轻松。作者为初学者,说的不对的地方,欢迎指正。

目录

1.初识java

2.数据类型与变量

3.运算符

4.程序的逻辑控制

Java输出

 输入

5.方法的使用

方法的定义

 方法的调用过程

方法重载

6.数组的定义与使用

数组的创建

7.类和对象

8.继承和多态

9.抽象类和接口

抽象类概念

抽象类语法

10.认识String类

字符串构造

字符串常量池(StringTable)

11.认识异常

异常的概念

异常的体系结构

异常的处理

防御式编程

自定义异常类

总结


我从这11个章节吧,差不多学完了SE的语法,前面几乎一般都与C语言差不太多,但是也或多或少存在一些差别,从类和对象开始,后面的内容,就为java的特性了,面向对象语言的特性。也是从这里开始逐渐变得有点抽象了。

1.初识java

初识java没啥好说的,主要学习了java的发展历史,以及了解java文件class文件,jdk,jvm分别是什么,等问题。

2.数据类型与变量

首先我们要记住这张图。

 java中数据类型分为八种基本类型(上图所示)和引用数据类型,八种基本数据类型,基本与C无差别。布尔为java新增,char在java中2字节。String字符串为引用类型。

3.运算符

运算符与C也无太大差别。

4.程序的逻辑控制

这里主要讲顺序结构,选择与循环,这些用法也几乎与C相同。

Java输出

 输入

 输入需要导入util包

5.方法的使用

方法的定义

 方法的调用过程

调用方法--->传递参数--->找到方法地址--->执行被调方法的方法体--->被调方法结束返回--->回到主调方法继续往下执行

方法重载

在Java中,如果多个方法的名字相同,参数列表不同,则称该几种方法被重载了。

public class TestMethod {
  public static void main(String[] args) {
    add(1, 2); // 调用add(int, int)
    add(1.5, 2.5); // 调用add(double, double)
    add(1.5, 2.5, 3.5); // 调用add(double, double, double)
  }
  public static int add(int x, int y) {
    return x + y;
  }
  public static double add(double x, double y) {
    return x + y;
  }
  public static double add(double x, double y, double z) {
    return x + y + z;
  }
}

注意:
1. 方法名必须相同
2. 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
3. 与返回值类型是否相同无关


6.数组的定义与使用

数组的创建

T[] 数组名 = new T[N];

T:表示数组中存放元素的类型
T[]:表示数组的类型
N:表示数组的长度
数组初始化

1. 动态初始化:在创建数组时,直接指定数组中元素的个数

int[] array = new int[10];

2. 静态初始化:在创建数组时不直接指定数据元素个数,而直接将具体的数据内容进行指定
 

int[] array1 = new int[]{0,1,2,3,4,5,6,7,8,9};
double[] array2 = new double[]{1.0, 2.0, 3.0, 4.0, 5.0};
String[] array3 = new String[]{"hell", "Java", "!!!"};

7.类和对象

这里我借用别人的博客来说明,总归就是要找对象、创建对象、使用对象。

类和对象

8.继承和多态

这里也用几个博客来说明

继承     多态,向上转型与向下转型

9.抽象类和接口

抽象类概念


在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。

抽象类语法

在Java中,一个类如果被 abstract 修饰称为抽象类,抽象类中被 abstract 修饰的方法称为抽象方法,抽象方法不用给出具体的实现体。
 

// 抽象类:被abstract修饰的类
public abstract class Shape {
// 抽象方法:被abstract修饰的方法,没有方法体
abstract public void draw();
abstract void calcArea();
// 抽象类也是类,也可以增加普通方法和属性
public double getArea(){
return area;
} 
protected double area; // 面积
}

其他我们可以看这个博客。

 抽象类与接口

10.认识String类

字符串构造


String类提供的构造方式非常多,常用的就以下三种:

public static void main(String[] args) {
// 使用常量串构造
String s1 = "hello bit";
System.out.println(s1);
// 直接newString对象
String s2 = new String("hello bit");
System.out.println(s1);
// 使用字符数组进行构造
char[] array = {'h','e','l','l','o','b','i','t'};
String s3 = new String(array);
System.out.println(s1);
}

字符串常量池(StringTable)

字符串常量池在JVM中是StringTable类,实际是一个固定大小的HashTable,不同JDK版本下字符串常量池的位置以及默认大小是不同的。

注意:
1. 在JVM中字符串常量池只有一份,是全局共享的
2. 刚开始字符串常量池是空的,随着程序不断运行,字符串常量池中元素会越来越多
3. 当类加载时,字节码文件中的常量池也被加载到JVM中,称为运行时常量池,同时会将其中的字符串常量保存
在字符串常量池中
4. 字符创常量池中的内容:一部分来自运行时常量池,一部分来自程序动态添加
StringBuilde、StringBufferr的介绍


由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder和StringBuffer常用的一些方法,需要用到了大家可参阅 StringBuilder在线文档

11.认识异常

异常的概念

在程序中,程序猿是一帮办事严谨、追求完美的高科技人才。在日常开发中,绞尽脑汁将代码写的尽善尽美,在程序运行过程中,难免会出现一些奇奇怪怪的问题。有时通过代码很难去控制,比如:数据格式不对、网络不通畅、内存报警等。

异常的体系结构

异常种类繁多,为了对不同异常或者错误进行很好的分类管理,Java内部维护了一个异常的体系结构:

从上图中可以看到:
1. Throwable:是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception
2. Error:指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型代表:StackOverflowError和OutOfMemoryError,一旦发生回力乏术,就像人得了癌症。
3. Exception:异常产生后程序员可以通过代码进行处理,使程序继续执行。比如:感冒、发烧。我们平时所说的异常就是Exception。

异常的处理

防御式编程

1. LBYL: Look Before You Leap. 在操作之前就做充分的检查. 即:事前防御型
 

boolean ret = false;
ret = 登陆游戏();
if (!ret) {
处理登陆游戏错误;
return;
}
 ret = 开始匹配();
if (!ret) {
处理匹配错误;
return;
}
 ret = 游戏确认();
if (!ret) {
处理游戏确认错误;
return;
}
 ret = 选择英雄();
if (!ret) {
处理选择英雄错误;
return;
}
 ret = 载入游戏画面();
if (!ret) {
处理载入游戏错误;
return;
} 
.....

 缺陷:正常流程和错误处理流程代码混在一起, 代码整体显的比较混乱。

2. EAFP: It's Easier to Ask Forgiveness than Permission. "事后获取原谅比事前获取许可更容易". 也就是先操作,遇到问题再处理. 即:事后认错型

try {
登陆游戏();
开始匹配();
游戏确认();
选择英雄();
载入游戏画面();
...
} catch (登陆游戏异常) {
处理登陆游戏异常;
} catch (开始匹配异常) {
处理开始匹配异常;
} catch (游戏确认异常) {
处理游戏确认异常;
} catch (选择英雄异常) {
处理选择英雄异常;
} catch (载入游戏画面异常) {
处理载入游戏画面异常;
} .
.....

优势:正常流程和错误流程是分离开的, 程序员更关注正常流程,代码更清晰,容易理解代码
异常处理的核心思想就是 EAFP。

在Java中,异常处理主要的5个关键字:throw、try、catch、final、throws。
【异常处理流程总结】

  • 程序先执行 try 中的代码
  • 如果 try 中的代码出现异常, 就会结束 try 中的代码, 看和 catch 中的异常类型是否匹配.
  • 如果找到匹配的异常类型, 就会执行 catch 中的代码
  • 如果没有找到匹配的异常类型, 就会将异常向上传递到上层调用者.
  • 无论是否找到匹配的异常类型, finally 中的代码都会被执行到(在该方法结束之前执行).
  • 如果上层调用者也没有处理的了异常, 就继续向上传递.
  • 一直到 main 方法也没有合适的代码处理异常, 就会交给 JVM 来进行处理, 此时程序就会异常终止.

自定义异常类

自定义异常类的使用

总结

JavaSE学起来并不是很难,由于有C的基础也还是很好上手的。但是在类和对象这几张有点抽象,要多加理解。学完SE还有数据结构,JavaEE等等,继续加油努力吧!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿拉蕾wjh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值