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) 能够让您在桌面和server以及眼下要求较高的嵌入式环境中开发和部署 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的包。
watermark/1/image/aHR0cDovL3N5bC1zdGF0aWMucWluaXVkbi5jb20vaW1nL3dhdGVybWFyay5wbmc=/dissolve/60/gravity/SouthEast/dx/0/dy/10" alt="创建包" title="">
然后在这个包里面加入一个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中,类的实例化方法一共同拥有四种途径:
- 使用new操作符
- 调用Class对象的newInstance()方法
- 调用clone()方法。对现有实例的拷贝
- 通过ObjectInputStream的readObject()方法反序列化类
我们在自己定义图书类这个样例中。编写了有參数的构造方法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();
            }
        }
}你可能会问为什么会用到try、catch以及Exception之类的奇怪的东西。这是由于上述代码会抛出大量的异常。
我们通常不推荐这样写。不用操心,我们将在错误处理一章为你详细介绍他们的原理和使用方法。
点击编译并执行。假设在控制台能够看到下列信息则表示你成功了。

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

四、实验总结
本章我们学习了J2SE的基本概念和架构,复习了面向对象中类和对象、动态实例化类的相关知识。建议大家再积累一些数据结构相关知识。以便更好地投入到兴许的学习中。
J2SE的整个体系还是非常庞大的,本课程会力所能及地涵盖其核心的知识点,假设你想更加深入地学习Java知识。我们还推荐你去阅读《Java 2核心技术》等书籍。
五、作业
好了。我们今天的认识J2SE课程就讲完了,你对Java这个大家庭又了解了多少?
最好还是通过解决以下的问题来巩固今日所学吧。
一个学校里面有老师和学生,他们具有一些相同的属性,比如姓名、生日、性别等。但老师另一个特别的工龄属性,请尝试利用学生类来编写老师类,利用继承技术让老师类使用学生类中定义的属性和方法,而且为老师类创建新的工龄属性。
为什么要这样做?由于
url=nCZxTZfD01QdeodlmhGU74gt7lQlOPuqmEcD-4A4zrT5as7vovuVL69EKnpEF7_wyRrbrDWTgTFp29-WH4_DGK">继承技术
能够让你少写非常多代码啊…
本文原文链接:https://www.shiyanlou.com/courses/111 本课为实验楼原创课程,转载请注明。
J2SE核心开发实战(一)——认识J2SE的更多相关文章
- J2SE核心开发实战
		原图链接:http://naotu.baidu.com/file/7e3fb5d333b8cb665038390617834559?token=3c3c9d183944dd8e 课程来源:https: ... 
- J2SE核心开发实战(二)——字符串与包装类
		字符串与包装类 一.实验简单介绍 在本章.我们将学习一些用于处理字符串的API以及包装类的相关知识. 本章知识点 字符串API 包装类及其应用 二.认识字符串类 1. 什么是字符串类 Java字符串类 ... 
- SDL 开发实战(二):SDL 2.0 核心 API 解析
		在上一篇文章 SDL 开发实战(一):SDL介绍及开发环境配置 中,我们配置好了SDL的开发环境,并成功运行了SDL的Hello World 代码.但是可能大部分人还是读不太明白具体Hello Wol ... 
- chrome拓展开发实战:页面脚本的拦截注入
		原文请访问个人博客:chrome拓展开发实战:页面脚本的拦截注入 目前公司产品的无线站点已经实现了业务平台组件化,所有业务组件的转场都是通过路由来完成,而各个模块是通过requirejs进行统一管理, ... 
- chrome拓展开发实战
		chrome拓展开发实战:页面脚本的拦截注入 时间 2015-07-24 11:15:00 博客园精华区 原文 http://www.cnblogs.com/horve/p/4672890.htm ... 
- Java Web整合开发实战:基于Struts 2+Hibernate+Spring 目录
		第1篇 Java Web开发基础第1章 Web的工作机制( 教学视频:31分钟) 1.1 理解Web的概念 1.1.1 Web的定义 1.1.2 Web的三个核心标准 1.2 C/S与B/S两种软件体 ... 
- [置顶] PHP开发实战权威指南-读书总结
		从今年开始,断断续续学习PHP已经有4个月了. 最初,认真学习PHP几天,就弄WordPress搭建了一个个人博客,这也符合技术人的实践理念. 最近,重温PHP开发实战权威指南,做点总结,整理下自己学 ... 
- [原创].NET 分布式架构开发实战五 Framework改进篇
		原文:[原创].NET 分布式架构开发实战五 Framework改进篇 .NET 分布式架构开发实战五 Framework改进篇 前言:本来打算这篇文章来写DAL的重构的,现在计划有点改变.之前的文章 ... 
- Swift游戏开发实战教程(霸内部信息大学)
		Swift游戏开发实战教程(大学霸内部资料) 试读下载地址:http://pan.baidu.com/s/1sj7DvQH 介绍:本教程是国内第一本Swift游戏开发专向资料. 本教程具体解说记忆配对 ... 
随机推荐
- 27.C语言宽字符操作
			#include <locale.h> setlocale(LC_ALL, "zh-CN"); wchar_t wch = L'我'; putwchar(wch); # ... 
- Concurrent.Thread.js
			(function(){ if ( !this.Data || (typeof this.Data != 'object' && typeof this.Data != 'functi ... 
- [Usaco2009 Feb]Stock Market 股票市场 完全背包
			Code: #include<cstdio> #include<algorithm> #include<iostream> #include<cstring& ... 
- flex 光标(CursorManager)
			flex 光标(CursorManager) CursorManager相关属性 getInstance():ICursorManager AIR 应用程序中的每个 mx.core.Window ... 
- gcc---C/C++ 编译器
			gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点.现在很多程序员都应用GCC,怎样才能更好的应用GCC.目前,GCC可以用 ... 
- UVA 11642 Fire!
			Fire! Time Limit: 1000ms Memory Limit: 131072KB This problem will be judged on UVA. Original ID: 116 ... 
- cogs 1456. [UVa 10881,Piotr's Ants]蚂蚁
			1456. [UVa 10881,Piotr's Ants]蚂蚁 ★ 输入文件:Ants.in 输出文件:Ants.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述 ... 
- CentOS-6.4-minimal版中安装JDK_Maven_Subversion以及改动rpm包安装路径
			完整版见https://jadyer.github.io/2013/09/07/centos-config-develop/ /** * @see -------------------------- ... 
- kettle(一)概述
			近期两个月一直和kettle打交道,从開始的没听说过,到如今能够熟练运用,不得不说项目驱动下,学习东西是最快的.好了,尽管使用kettle应付项目的任务绰绰有余.可是还是想系统的学习一下,总结一下.比 ... 
- Android实现本地图片选择及预览缩放效果仿春雨医生
			在做项目时常常会遇到选择本地图片的需求.曾经都是懒得写直接调用系统方法来选择图片.可是这样并不能实现多选效果.近期又遇到了,所以还是写一个demo好了.以后也方便使用.还是首先来看看效果 显示的图片使 ... 
