我们先来了解一下什么是 J2SE。

J2SE 的定义

J2SE,全称为Java 2 Standard Edition。Java 2 平台包括:标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。J2SE 即 Java 2 的标准版,主要用于桌面应用软件的开发。

下面这段话是 ORACLE 对于 Java SE 的官方描述:

Java Platform, Standard Edition (Java SE) 可以让您在桌面和服务器以及目前要求较高的嵌入式环境中开发和部署 Java 应用程序。 Java 提供了当今应用程序所需要的丰富的用户界面、良好的性能、多功能性、可移植性和安全性。

J2SE 与 J2EE、J2ME 之间的关系可以通过下图来表示:

J2SE 的架构

J2SE 的架构如下图所示,它主要包含了 UI、集成库、语言和工具基础库、其他基础库、Java 虚拟机等组件。

综上所述,将 J2SE 压缩一点再加上一些CLDC等方面的特性就是 J2ME;将其扩充一点再增加一些 EJB 等企业应用方面的特性就是 J2EE。因此 J2SE 是 J2EE 的基础,建议从事 Java 的开发人员从 J2SE 开始学习。

面对对象——巩固与提高

在前面 Java 基础语法的学习中,你应该接触了一些面向对象的基础知识。面向对象的概念在 Java 的开发体系中无处不在,在今后的开发过程中,你也应该以面向对象的思想来看待和解决问题。

既然是面向对象,就会谈论到类和对象的概念,以及它们之间的关系:

类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。

类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。

下面,我们通过一些例子来巩固面向对象的相关知识。

自定义图书类

我们首先在 Eclipse 中创建一个名为HelloJ2SE的 Java Project,这里我们选用 Java 1.8,再在 src 文件夹下新建一个名为com.shiyanlou.course的包。

注意:我们建议你在之后的项目创建中都使用 1.8 版本

然后我们在这个包里添加一个Book类。

对于一个图书类,一般有书名、作者和编码等属性。我们利用这些常见属性来自定义这个图书类,创建的Book.java文件中主要代码如下:

特别说明: 在实验楼的实验环境中,暂不支持输入中文,因此你不必将代码片段中的注释也输入开发环境。该说明同样适用于本课程后续的章节。

package com.shiyanlou.course;
//此为包名,如果你在创建包时已自动生成了该行,请忽略public class Book {private String name; // 书名private String author; // 作者private String ISBN; // 编码//Tips: ISBN是国际标准书号,每本书背面的条形码即为此物public Book(String name, String author, String ISBN) {// 利用构造方法初始化域this.name = name;this.author = author;this.ISBN = ISBN;//Q:你清楚this的用法吗?}public String getName() { // 获得书名return name;}public String getAuthor() { // 获得作者return author;}public String getISBN() { // 获得编码return ISBN;}
}

为了测试我们刚刚自定义的图书类,我们在com.shiyanlou.course这个包中再创建一个名为Test的类文件,并在main()方法中创建一个Book对象。最后,我们在控制台输出这个Book对象的属性。

创建的Test.java文件中,主要的代码如下:

package com.shiyanlou.course;public class Test {public static void main(String[] args) {Book book = new Book("This is my 1st book", "Peter", "1234567890");// 创建Book对象并设定其各个属性System.out.println("Book Name: " + book.getName());// 输出这本书的名字System.out.println("Book Author: " + book.getAuthor());// 输出这本书的作者System.out.println("ISBN: " + book.getISBN());// 输出这本书的编码}
}

点击编译并运行。

如果在控制台中可以看到下图这样的信息,那么祝贺你,一个自定义的图书类就成功完成了。

当然,你也可以为Book类添加更多的属性,并为每个属性编写get方法。

动态化实例类

在面向对象的编程中,把用类创建对象的过程称为实例化。通常是使用有参数或无参数的构造方法来创建对象。其格式如下:

//有参数的情形
CLASS_NAME OBJECT_NAME = new CLASS_NAME(parameter_1,...parameter_n);//例如下面这个例子
Person peter = new Person("Peter","boy");//无参数的情形
CLASS_NAME OBJECT_NAME = new CLASS_NAME();//例如下面这个例子
Dog dog_1 = new Dog();

你可以仿照自定义图书类的例子,通过自己创建相关的Person类和Dog类以及测试的方法来验证上述过程。

但是在 Java 中,类的实例化方法一共有四种途径:

  1. 使用new操作符
  2. 调用 Class 对象的newInstance()方法
  3. 调用clone()方法,对现有实例的拷贝
  4. 通过ObjectInputStreamreadObject()方法反序列化类

我们在自定义图书类这个例子中,编写了有参数的构造方法public Book(String name, String author, String ISBN)。但如果类中没有定义构造方法,编译器便会自动添加一个无参数的构造方法。使用构造方法创建对象虽然常用,但并不灵活。因此,我们再来了解一下动态化实例类,也就是调用 Class 对象的newInstance()方法,通过反射创建对象。

了解一下反射的概念:

JAVA 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为 java 语言的反射机制。

那么我们就开始来学习如何动态化实例类:

请在 Eclipse 中创建一个项目DynamicClass,并在该项目中创建com.shiyanlou.course包。在该包中创建Test类,并编写main()方法。

main()方法中创建一个 File 对象(你只需要知道 File 对象也是一个对象即可,进一步了解 File 对象)。

最后,使用该对象在桌面创建一个文本文件。

主要的代码如下:

package com.shiyanlou.course;import java.io.File;
import java.lang.reflect.Constructor;
//需要引用上述两个包public class Test {public static void main(String[] args) {try {Constructor<File> constructor = File.class.getDeclaredConstructor(String.class);//获得File类的Constructor对象System.out.println("Create File Object with reflection.");//使用反射创建File对象File file = constructor.newInstance("/home/shiyanlou/Desktop/MyFile.txt");System.out.println("Use File Object to create MyFile.txt on desktop.");//指定了创建的路径为桌面,名称为“MyFile.txt”file.createNewFile(); //创建新的文件System.out.println("File is created ?" + file.exists());//验证文件是否创建成功} catch (Exception e) {e.printStackTrace();}}
}

你可能会问为什么会用到trycatch以及Exception之类的奇怪的东西,这是由于上述代码会抛出大量的异常。我们通常不推荐这样写。不用担心,我们将在错误处理一章为你详细介绍他们的原理和用法。

点击编译并运行,如果在控制台可以看到下列信息则表示你成功了。

同时,你也应该可以在桌面上发现自己创建的这个MyFile.txt文件。

实验总结

前面我们讲了 J2SE 的基本概念和架构,复习了面向对象中类和对象、动态实例化类的相关知识。如果想要学号 J2SE,建议大家再积累一些数据结构相关知识,以便更好地投入到后续的学习中。

J2SE 的整个体系还是很庞大的,实验楼的新课《J2SE 基础入门实战》会力所能及地涵盖其核心的知识点,如果你想更加深入地学习 Java 知识,我们还推荐你去阅读《Java 2 核心技术》等书籍。

J2SE 基础入门,从事 Java 必学!相关推荐

  1. 从小白入门c语言,菜鸟小白入门C语言必学之C语言最基础的知识细节!

    基本输入输出 C语言本身并没有输入输出功能的语句,数据的输入输出都是通过函数调用来实现的. C语言提供了标准函数库,其中就包括了基本输入输出函数,C语言把这一类的函数的定义放在了头文件stdio.h中 ...

  2. python必备基础代码-新手上路必学的Python函数基础知识,全在这里了(多段代码举例)...

    原标题:新手上路必学的Python函数基础知识,全在这里了(多段代码举例) 导读:函数是Python中最重要.最基础的代码组织和代码复用方式.根据经验,如果你需要多次重复相同或类似的代码,就非常值得写 ...

  3. 零基础入门学习Java,如何快速打好基础?

    从大学到现在,我使用Java已经将近20年,日常也带实习生,还在公司内部做training,所以可以分享下我的经验,希望对你有用. 因为是在工作中培训,就必然有两个约束:实用.时间紧,因此就不能像大学 ...

  4. linux菜鸟必学的60个命令,新手入门 Linux菜鸟必学的60个命令

    linux常用命令介绍 Linux必学命令 Linux提供了大量的命令,利用它可以有效地完成大量的工作,如磁盘操作.文件存取.目录操作.进程管理.文件权限设定等.所以,在Linux系统上工作离不开使用 ...

  5. autojs零基础入门视频教程,跟我学Auto.js Pro安卓免ROOT引流脚本开发教程,飞云脚本学院2019最新录制

    课程大纲(更新中-) 基础课程 [已完成]01安装Visual Studio Code(时长9分33秒)在线观看 [已完成]02安装Auto.js Pro(时长5分48秒)在线观看 [已完成]03解读 ...

  6. 零基础入门原画必知的技巧

    原画设计是当前热门职业之一,有很多小白在初期学习原画设计会感到很困惑,不知道从何下手, 在学习初期,掌握好这5个通用的小技巧,一定能让你把握住原画的脉络.但是要创作更为精彩的作品,一定要不断练习观察, ...

  7. 如何学IT?零基础入门自学Java编程系列:java简介跟计算机常识

    学习Java我们应该懂的一些常识 作为IT人士,那什么叫IT呢? 即信息技术,主要用于管理和处理信息所采用的各种技术的总称.IT业务是很广的.比如经历了最早一批大型机发展到PC电脑端,再到互联网高速发 ...

  8. java必学_Java基础系列之初识JAVA

    工欲善其事必先利其器,在学习Java之初,大家一定要先了解下java的历史,以及找到一个适合自己的学习方法!很多同学在自学或者听课之初,完全不建议你直接使用一些IDE工具去写程序!自己先动手完全是很有 ...

  9. 零基础入门学习Java,这几本经典的Java学习书籍,可以推荐你看下,绝对受益匪浅!

    书是人类不可或缺的精神食粮.正如高尔基所言:书是人类进步的阶梯.借名人名言给大家推荐一些对java学习有用的经典书籍,对程序员来说,我觉得最佳学习方式还是看书,看视频花费时间太长,而阅读博客则不够系统 ...

最新文章

  1. 幂等性 第三方交易编号_java幂等性的解决方案
  2. 题目1551:切蛋糕
  3. lazada食品类目如何做好运营,来提升店铺销量?
  4. Android新增Activity,并实现多Activity之间的切换
  5. Java适配器的设计模式
  6. 【英语学习】【WOTD】condone 释义/词源/示例
  7. 反射类的构造函数和方法
  8. 浅析C++游戏开发工程师的工作职责以及任职资格
  9. Spring.NET教程(三)——对象的创建(基础篇)
  10. 自定义List对象集合排序
  11. scrapy解析网页时,针对一些特别格式的数据的处理
  12. 视频号账号定位怎么做?如何做微信视频号定位
  13. TCP Data Flow and Window Management(1)
  14. 校园网高清视频下载器
  15. vim-surround 插件用法
  16. JAVA中String与Date类型互转
  17. centos打开指定端口(443),Linux防火墙状态查看的方法
  18. actionbar 兼容包几个注意点
  19. Java String类
  20. 博实乐教育集团拟数亿元收购留学生求职企业DBC

热门文章

  1. TTL_CMOS_RS232区别
  2. P2502 [HAOI2006]旅行 最小生成树
  3. 将前端文件和Go程序打包
  4. thinkPHP增删改查的方法案例
  5. JavaScript_process01
  6. [asp.net] 获取网页访问来路的几种方法
  7. 【java reflection】反射工具类总结
  8. php7连接mongodb,批量添加数据
  9. 开源大数据周刊-第103期
  10. 疯狂.NET架构通用权限后台管理工具演示版2.0下载