J2SE核心开发实战(一)——认识J2SE

认识J2SE

一、课程简介

在本章学习开始前,你应该具备一些Java的基础知识。我们将在本章来认识J2SE,并复习一下前面学过的面向对象的相关知识。

注:所有的蓝色文字都是带超链接的,这些链接是本课程为你提供的扩展知识点,一定不要错过。

本章知识点

  • J2SE的定义和架构
  • 面向对象

二、什么是J2SE

1. 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之间的关系可以通过下图来表示:

2. J2SE的架构

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

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

三、面向对象——巩固与提高

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

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

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

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

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

1. 自定义图书类

首先在Eclipse中创建一个项目HelloJ2SE,新建一个名为com.shiyanlou.course的包。

然后在这个包里面添加一个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方法。

2. 动态化实例类

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

//有参数的情形
类名 对象名 = new 类名(参数1,参数2...参数n); 

//例如下面这个例子
Person peter = new Person("Peter","boy");

//无参数的情形
类名 对象名 = new 类名(); 

//例如下面这个例子
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的整个体系还是很庞大的,本课程会力所能及地涵盖其核心的知识点,如果你想更加深入地学习Java知识,我们还推荐你去阅读《Java 2核心技术》等书籍。

五、作业

好了,我们今天的认识J2SE课程就讲完了,你对Java这个大家庭又了解了多少?

不妨通过解决下面的问题来巩固今日所学吧。

一个学校里面有老师和学生,他们具有一些相同的属性,例如姓名生日性别等。但老师还有一个特别的工龄属性,请尝试利用学生类来编写老师类,利用继承技术让老师类使用学生类中定义的属性和方法,并且为老师类创建新的工龄属性。

为什么要这样做?因为继承技术可以让你少写很多代码啊…

本文原文链接:https://www.shiyanlou.com/courses/111 本课为实验楼原创课程,转载请注明。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 01:03:32

J2SE核心开发实战(一)——认识J2SE的相关文章

J2SE核心开发实战(二)——字符串与包装类

字符串与包装类 一.实验简单介绍 在本章.我们将学习一些用于处理字符串的API以及包装类的相关知识. 本章知识点 字符串API 包装类及其应用 二.认识字符串类 1. 什么是字符串类 Java字符串类(java.lang.String)是Java中使用最多的类.也是最为特殊的一个类,非常多时候,我们对它既熟悉又陌生. 首先你要知道什么是字符串: 字符串(String)是由数字.字母.下划线组成的一串字符,是编程语言中表示文本的数据类型. 你能够查看很多其它关于字符串的知识. 操作字符串的经常用法

J2SE核心开发实战

原图链接:http://naotu.baidu.com/file/7e3fb5d333b8cb665038390617834559?token=3c3c9d183944dd8e 课程来源:https://www.shiyanlou.com/courses/111

《Spring3.X企业应用开发实战》学习笔记--SpringMVC

本篇是<Spring3.X企业应用开发实战>,陈雄华 林开雄著,电子工业出版社,2012.2出版"的学习笔记的第三篇,关于SpringMVC. Spring MVC 3.0和早期版本相比拥有了一个质的飞跃,全面支持REST风格的WEB编程.完全注解驱动.处理方法签名非常灵活.处理方法不依赖于Servlet API等. 由于Spring MVC框架在后头做了非常多的隐性工作,所以想深入掌握Spring MVC 3.0并非易事,本章我们在学习Spring MVC的各项功能时,还深入其内部

面向Web Cloud的HTML5 App开发实战:Browser&amp;HTML5&amp;CSS3&amp;PhoneGap&amp;jQuery Mobile&amp; WebSocket&amp;Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技

Cocos2d-x+3.x游戏开发实战pdf

下载地址:网盘下载 内容简介  · · · · · · <Cocos2d-x 3.x游戏开发实战>是一本介绍Cocos2d-x游戏引擎的实用图书,全面介绍了最新的Cocos2d-x 3.2游戏引擎各方面的知识. <Cocos2d-x 3.x游戏开发实战>从内容层次上可分为四个部分.第一部分介绍了游戏开发的基础知识.游戏引擎概念.Cocos2d-x的下载与安装,以及跨平台开发环境的搭建.第二部分介绍了Cocos2d-x中的核心类.动作.动画.3D特效.文字.字体.菜单.事件处理.UI

chrome拓展开发实战

chrome拓展开发实战:页面脚本的拦截注入 时间 2015-07-24 11:15:00  博客园精华区 原文  http://www.cnblogs.com/horve/p/4672890.html 主题 Chrome 原文请访问个人博客: chrome拓展开发实战:页面脚本的拦截注入 目前公司产品的无线站点已经实现了业务平台组件化,所有业务组件的转场都是通过路由来完成,而各个模块是通过 requirejs 进行统一管理,在灰度测试时会通过grunt进行打包操作,虽然工程化的开发流程已经大大

企业级业务系统开发实战

通过一个系列讲述一个真实企业的ERP系统开发全过程.其中包括需求分析.设计建模.开发.测试全生命周期过程,其中会详细讲方法论与技术实践.涉及到的方法包括敏捷软件开发.四色原型.领域驱动设计.业务架构.技术架构与具体的EF.WF.EasyUI等技术在项目中的使用. 领域驱动设计案例之领域层框架搭建 摘要: 根据前面对领域驱动设计概念以及一些最佳实践的理解,领域模型是系统最核心的部分,我们还是采用前面销售订单的例子,这个案例系统的核心构建就从领域层开始.领域层框架搭建主要完成两个任务:1.领域模型的

跨平台开发实战系列篇-开篇

本系列文章将带着你从React Native入门到精通React Native开发,包括大型电商项目实战.大型新闻项目实战(一套代码运行在iOS平台和Android平台).持续更新中...... 一.前言 React Native于F8大会开源,在短短不到一年的时间里,它成为手机端必不可少的开发模式之一. 它充分利用了Facebook现有的业务轮子, 其核心设计理念:既拥有Native的用户体验.又保留React的开发效率, 也就是"learn once,write everywhere&quo

面向Web Cloud的HTML5 App开发实战:Browser&amp;HTML5&amp;CSS3&amp;PhoneGap&amp;jQuery Mobile&amp; WebSocket&amp;Node.js(3天)

课程简介: 王家林老师(联系邮箱[email protected] 电话:18610086859 QQ:1740415547 微信号:18610086859) 22个HTML5主题一次性贯穿HTML5的一切技术: 一网打尽HTML5时代Device.(设备端).Browser(浏览器)和Cloud(浏览器)的所有技术: 以浏览器定制技术为基础,通晓HTML5+CSS3+PhoneGap+Web Socket +jQuery Mobile +Node.js等HTML5的六大核心技术: 最新研发的H