Java程序设计(基础)-概述
⼀、Java特点
⼆、Java⼯作⽅式
1. 编写源代码。列⼊存为 Dome.java
2. 编译器。 执⾏javac来编译源代码。编译器会检查错误。
3. 如果程序没有错误,编译器产⽣编译⽂件Dome.class⽂件。这个编译⽂件由字节码组成。这个编译⽂件与平台⽆关
4. 启动JVM(Java虚拟机),运⾏Dome.calss. JVM将字节码转换为平台能理解的形式来运⾏。
三、Java开发⼯具
四、Java源程序结构
1.package语句
java编译器为每个类⽣成⼀个字节码⽂件,且⽂件名与类名相同,这就会带来⼀个问题:同名的类会发⽣冲突。
所以package的两个主要作⽤就呼之欲出了:管理类,解决命名冲突。
例如:
package com;
public class Test{}
package cn;
public class Test{}
虽然以上两个类同名,但是并不会出现命名冲突;也可以理解为其实包名就相当于⼀个⼈的姓⽒,⽽类名就相当于⼀个⼈的名;⽽⼀个⼈的姓名是姓+名;所以以上两个类的全称分别是:com.Test、cn.Test;当然就不会出现命名冲突了;
⼀般地,我们将具有相同功能的类放在⼀个package中。
2.import语句
import 代表此类中需要引⼊和封装的包,⼀般置顶。
1,加载已定义好的类或包
2,导⼊⽀持类(可以是JDK基础类或者⾃⼰编写的类),可以供本类调⽤⽅法和属性。
import导⼊声明可分为两种:
1,单类型导⼊(single-type-import) 例:import java.util.ArrayList;
2,按需类型导⼊(type-import-on-demand)  例:import java.util.*;
Import的使⽤主要是为了偷懒。Java为了解决命名冲突使⽤了package来管理类,那么问题就来了,如果在写代码的时候都使⽤类的全称,例如⼀下这样:
java.io.InputStream is = java.lang.System.in;
java.io.InputStreamReader isr= new java.io.InputStreamReader(is);
java.io.BufferedReader br = new java.io.BufferedReader(isr);
这样的代码看起来确实不是那么舒服,写起来更不舒服;所以我们使⽤了import,只需要在类声明前导⼊相关包:
import java.lang.System;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader
代码就清爽多了:
InputStream = System.in;
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
所以有⼈说import的使⽤就是⼀种偷懒的做法,这⼀点,我并不否认;
Import后出现命名冲突,在使⽤Import偷懒的时候也会出⼀些问题;
例如:
有⼈在同时import java.awt.*;import java.util.*后,在代码⾥⾯使⽤List,这个时候就炸锅了,因为这两个下⾯都有List,编译器就蒙圈了,它不知道,你要使⽤哪⼀个List;所以这个时候就要指定清楚,你具体使⽤哪⼀个。⽐如Java.util.List;这样编译器就知道了。
import可以使⽤通配符*,* 代表某package下所有的class,不包括⼦⽬录。看到了吧,就是说*只能导⼊类不能导⼊⼦⽬录,⽐如 import java.awt.*之后,你还是不能使⽤ java.awt.event下⾯的类,因为event是个⼦包啊,这个⼦包下⾯的类,*就⽆能为⼒了。现在知道为什么不能,直接import Java.*了吧。
总之,在使⽤import的时候,最好还是使⽤单类型导⼊,总结起来好处有两个:
(1)编译速度:虽然⽆论是哪种导⼊都不影响Java代码执⾏效率,但是在⼀个很⼤的项⽬中,它们会极⼤的影响编译速度.
(2)命名冲突:解决避免命名冲突问题的答案就是使⽤全名.⽽按需导⼊恰恰就是使⽤导⼊声明初衷的否定.
3.类/接⼝定义部分
类或者定义部分就是Java源程序的主体了:
类定义
[修饰符]class 类名[extends ⽗类] [implements 接⼝名]{[各种属性][各种⽅法]}
java修改html文件
例如:
public class SearchDaoImpl extends BaseSearchDaoImpl implements SearchDao {
protected final Log LOGGER = Log(getClass());
SearchConfigService searchConfigService;
public SearchPage findPage(SearchPageable searchPageable) {
return null;
}
接⼝定义
[修饰符] interface 接⼝名 [ extends ⽗接⼝] {[各种常量][各种⽅法的声明]}
例如:
public interface TipDao extends BaseDao<Tip, Long> {
boolean termExists(String term);
}
注:
⼀个java源程序⾄多只能有⼀个公共类的定义。
若java源程序有⼀个公共类的定义,则该源⽂件名字必须与该公共类的名字完全相同。
若源程序中不包含公共类的定义,则该⽂件名可以任意取名。
若⼀个源程序中有多个类定义,则在编译时将为每个类⽣成⼀个。class⽂件。
五、Java注释
单⾏注释:// 注释内容
多⾏注释:/… 注释内容…/
⽂本注释:/**… 注释内容…*/
这种注释可以⽤来⾃动地⽣成⽂档。在JDK中有个javadoc的⼯具,可以由源⽂件⽣成⼀个HTML⽂档。使⽤这种⽅式注释源⽂件的内容,显得很专业,并且可以随着源⽂件的保存⽽保存起来。也就是说,当修改源⽂件时,也可能对这个源代码的需求等⼀些注释性的⽂字进⾏修改,那么,这时候可以将源代码和⽂档⼀同保存,⽽不⽤再另外创建⼀个⽂档。
⽂档注释位置
(1)类注释。类注释⽤于说明整个类的功能、特性等,它应该放在所有的“import”语句之后,在class定义之前。
这个规则也适⽤于接⼝(interface)注释。
(2)⽅法注释。⽅法注释⽤来说明⽅法的定义,⽐如,⽅法的参数、返回值及说明⽅法的作⽤等。⽅法注释应该放在它所描述的⽅法定义前⾯。
(3)属性注释。默认情况下,javadoc只对公有(public)属性和受保护属性(protected)产⽣⽂档——通常是静态常量。
(4)包注释。类、⽅法、属性的注释都直接放到Java的源⽂件中,⽽对于包的注释,⽆法放到Java⽂件中去,只能通过在包对应的⽬录中添加⼀个package.html的⽂件来达到这个⽬的。当⽣成HTML⽂件时,package.html⽂件的和部分的内容将会被提取出来当做包的说明。关于包注释,后⾯还会有更进⼀步的解释。
(5)概要注释。除了包注释外,还有⼀种类型的⽂档⽆法从Java源⽂件中提取,就是对所有类⽂件提供概要说明的⽂件。同样的,也可以为这类注释单独新建⼀个HTML⽂件,这个⽂件的名字为“overview.html”,它的和标记之间的内容都会被提取。
·@author:作者。
·@version:版本。
·@docroot:表⽰产⽣⽂档的根路径。
·@deprecated:不推荐使⽤的⽅法。
·@param:⽅法的参数类型。
·@return:⽅法的返回类型。
·@see:⽤于指定参考的内容。
·@exception:抛出的异常。
·@throws:抛出的异常,和exception同义

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。