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等等,继续加油努力吧!
JavaSE学习总结相关推荐
- JavaSE学习总结(八)—— 异常处理(Exception)
JavaSE学习总结(八)-- 异常处理(Exception) 参考文章: (1)JavaSE学习总结(八)-- 异常处理(Exception) (2)https://www.cnblogs.com/ ...
- JavaSE学习(1)
JavaSE学习(1)目录 单例模式 面向对象 继承extends 重载vs重写 构造函数 final关键字 抽象类abstract关键字 接口Interface 多态 匿名内部类 异常Excepti ...
- JavaSE学习总结(八)常用类(上)Object类==与equals方法的区别浅克隆的特点Scanner类String类String两种创建对象方式的区别String类的各种功能
JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能 常用 ...
- JavaSE学习小结二
JavaSE学习小结二 记录学习----------JavaSE模块三&四 其中大部分是一些工具类,会将常用方法及其功能描述整理成表格方便日后查阅 文章目录 JavaSE学习小结二 一.Obj ...
- javaSE学习笔记——第十四天正则表达式、Math类、System类、Data类、Calendar类等
javaSE学习第十四天 java知识 正则表达式的概述和简单使用 A:正则表达式 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串.其实就是一种规则.有自己特殊的应用. 作用:比如 ...
- 【JavaSE学习笔记】
JavaSE学习笔记 一.java的基本语法 变量运算规则 编码情况1中l后面没有加L,默认是int变量 编码情况2中b1=b+1中的1默认是int型变量,会出错 string类型 string里面可 ...
- JavaSE学习笔记(持续更新)
这里写目录标题 JavaSE学习笔记(持续更新) Java跨平台原理与核心机制 1.跨平台原理: 2.两种核心机制: JDK11的安装流程 Java程序开发的三个步骤(无编辑器版) Eclipse安装 ...
- 【JAVASE(7)】JAVASE学习--注解及小众常用类篇
A.注解--Annotation 一.概念: 注释:文字描述程序,给人看 注解:说明程序,给计算机看 1)从JDK5开始,Java增加对元数据的支持(MetaD ...
- JAVASE学习 面向对象
JAVASE学习 面向对象 1.面向对象(构造方法Constructor概述和格式) A:构造方法概述和作用 给对象的数据(属性)进行初始化 B:构造方法格式特点 a:方法名与类名相同(大小也要与类名 ...
- 重拾JavaSE学习笔记
重拾JavaSE学习笔记 1.常用DOS命令 2.了解Java 2.1 .java特性 2.2.JDK .JRE.JVM 2.3.java的加载和执行 3.开发环境搭建 3.1.安装jdk 3.2.配 ...
最新文章
- 每日一皮:程序员距离人生目标只有一个沟
- Leetcode 211. 添加与搜索单词 - 数据结构设计 解题思路及C++实现
- (Mybatis)复杂查询
- 类型转换,类与类之间的转换,继承关系,继承与静态变量,子类父类重名,多继承,虚基类
- 浏览器兼容_查成绩浏览器不兼容怎么办?
- 神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python运算符和表达式)
- mysql 统一字符编码
- python枚举函数_python dict函数枚举对象
- ResourceBundle读取properties文件
- 信道编码中卷积编码器的设计
- C++标准模板(STL)- 算法 (std::adjacent_find)
- “90后”男子酒后乱性强奸醉酒女获刑3年
- 使用PyTorch实现手写文字识别的学习
- NBUT1225 NEW RDSP MODE I(快速幂,规律)
- 算法工程师0——算法工程师学习进阶路线
- Leetcode 三数之和
- 3d点云与cad模型
- Python||报错:ModuleNotFoundError: No module named ‘nltk‘
- python画美国国旗,小白画法
- 深入渗透流行趋势 安防行业发展机遇多
热门文章
- 世界上唯一可以刷卡买飞机的信用卡
- 这才叫装机必备 , 这4款电脑软件超级实用,用一次就爱上
- 初学python100例-案例36 季节判断器 少儿编程python编程实例讲解
- 数据结构与算法:顺序表和链表的常用操作 (很全,基本涵盖本章所有算法)
- 使用python的scapy库,提供一个通过nbns获取主机名称的示例代码
- 卷积神经网络——FPN论文翻译
- HTML学生个人网站作业设计:旅游景点网站设计——北京故宫(9页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载...
- java面试题背不下来怎么办?java面试题总结
- [opencv][原创]关于opencv-python的cv2保存视频不支持H264格式问题探讨
- php有strock吗,PHP应用JSON技巧讲解