Java程序设计(基础)- 概述

Java程序设计(基础)- 概述

Java基础

一、Java特点

Java之Java特点

二、Java工作方式

  1. 编写源代码。列入存为 Dome.java

  2. 编译器。 执行javac来编译源代码。编译器会检查错误。

  3. 如果程序没有错误,编译器产生编译文件Dome.class文件。这个编译文件由字节码组成。这个编译文件与平台无关

  4. 启动JVM(Java虚拟机),运行Dome.calss. JVM将字节码转换为平台能理解的形式来运行。

三、Java开发工具

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 接口名]{[各种属性][各种方法]}

例如:

public class SearchDaoImpl extends BaseSearchDaoImpl implements SearchDao {
   protected final Log LOGGER = LogFactory.getLog(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同义

Java设计基础及面向对象导向

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106719.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 转罗马字符_罗马字符是什么意思

    转罗马字符_罗马字符是什么意思publicclassNumToRoman{publicstaticstringToRomanNum(intpNum){string[,]a=newstring[3,10]{{“”,”I”,”II”,”III”,”IV”,”V”,”VI”,”VII”,”VIII”,

  • materialize软件下载_钢琴零基础入门教程

    materialize软件下载_钢琴零基础入门教程https://materializecss.com/https://github.com/Dogfalo/materializehttp://www.materializecss.cn/1,下

  • phpStudy中升级MySQL版本到5.7.17的方法步骤

    phpStudy中升级MySQL版本到5.7.17的方法步骤

    2021年10月22日
  • pycharm使用技巧及常用快捷键_常用快捷键大全图片

    pycharm使用技巧及常用快捷键_常用快捷键大全图片Pycharm常用快捷键1、编辑(Editing)Ctrl+Space基本的代码完成(类、方法、属性)Ctrl+Alt+Space快速导入任意类Ctrl+Shift+Enter语句完成Ctrl+P参数信息(在方法中调用参数)Ctrl+Q快速查看文档F1外部文档Shift+F1外部文档,进入web文档主页Ctrl+Shift+Z–>Redo重做Ctrl+鼠标简介/进入代码定义Ctrl+F1显示错误描述或警告.

  • LabelImg教程[通俗易懂]

    LabelImg教程[通俗易懂]目标检测中,原始图片的标注过程是非常重要的,它的作用是在原始图像中标注目标物体位置并对每张图片生成相应的xml文件表示目标标准框的位置。本文介绍一款使用方便且能够标注多类别并能直接生成xml文件的标注工具——labelImg工具,并对其使用方法做一个介绍。本文仅针对ubuntu系统做使用介绍。1、下载LabelImg方式1:网址:https://github.com/tzu…

  • tomcat配置和使用

    tomcat配置和使用tomcat配置:https://blog.csdn.net/qq_39081974/article/details/78803919配置问题解决:https://blog.csdn.net/gyp0307/article/details/821945261、JavaWebJavaweb,是用java技术来解决相关web互联网领域的技术的总称。web包括:web服务器和web客户…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号