Java程序设计基础

Java最早是由SUN公司(2009年4月被Oracle收购)的James Gosling(詹姆斯·高斯林Java之父)在上个世纪90年代初开发的一种编程语言,最初被命名为Oak,在1995年以Java的名称正式发布,1995年5月23日Java语言诞生。

1999年6月Java又分出了三个不同版本:

Java SE:Standard Edition

Java EE:Enterprise Edition

Java ME:Micro Edition

Java SE就是标准版,包含标准的JVM和标准库,而Java EE是企业版,它只是在Java SE的基础上加上了大量的API和库,以便方便开发Web应用、数据库、消息服务等,Java EE的应用使用的虚拟机和Java SE完全相同。

Java ME就和Java SE不同,它是一个针对嵌入式设备的“瘦身版”,Java SE的标准库无法在Java ME上使用,Java ME的虚拟机也是“瘦身版”,不幸的是,Java ME从来没有真正流行起来。

Java SE是整个Java平台的核心,而Java EE是进一步学习Web应用所必须的。学习Java 应从Java SE入手。2018年9月25日,Java SE 11这个重要版本发布,现在学习应从它开始。JDK 11 官方文档 https://docs.oracle.com/en/java/javase/11/

Java 入门-Oracle 技术网 https://www.oracle.com/technetwork/cn/java/newtojava-100451-zhs.html

JavaScript基本语法

编写Java程序前应注意以下几点:

大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。

源文件名:如果代码文件中若没有public class,则文件名可以与类名不同,若有保存文件时,应使用类名保存它(记住Java区分大小写)并在名称的末尾使用扩展名称.java,否则会导致编译错误。假设是public class,类名是MyProgram,那么该文件应保存为:MyProgram.java。

主(main)方法入口:所有的Java程序由public static void main(String[] args)方法开始执行。

建议类名的首字母大写,方法名以小写字母开头。

Java 语言是区分大小写的

Java 语言是区分大小写的,也称为大小写敏感,不管是命名变量还是使用关键字。在 Java 中,关键字都是小写的。对于变量名,函数名、函数参数等,需要区分大小写,区分大小写,如A和a是两个不同的变量。

标识符(identifier)

标识符指的是用来识别各种值的合法名称。最常见的标识符有:变量名,函数名。在Java中对象,变量、函数名都是区分大小写的。

标识符命名规则

第一个字符可以是任意 Unicode 字母(运算符、数字除外),以及美元符号($)和下划线(_)。后面的字符可以用数字。Unicode字符包含汉字,故Java标志符可以是中文,但不提倡。关于Unicode 参见https://liyucang-git.github.io/2019/06/17/彻底弄懂Unicode编码/

关键字不能用作标识符,Java关键字是Java语言保留供内部使用的,如class用于定义类。关键字也称作保留字。组成关键字的字母全部小写。注:goto和const作为保留字存在,目前并不使用。main并不是关键字。

Java关键字及含义如下表:

关键字

含义

abstract

表明类或者成员方法具有抽象属性

assert

断言,用来进行程序调试

boolean

基本数据类型之一,声明布尔类型的关键字

break

提前跳出一个块

byte

基本数据类型之一,字节类型

case

用在switch语句之中,表示其中的一个分支

catch

用在异常处理中,用来捕捉异常

char

基本数据类型之一,字符类型

class

声明一个类

const

保留关键字,没有具体含义

continue

回到一个块的开始处

default

默认,例如,用在switch语句中,表明一个默认的分支。Java8 中也作用于声明接口函数的默认实现

do

用在do-while循环结构中

double

基本数据类型之一,双精度浮点数类型

else

用在条件语句中,表明当条件不成立时的分支

enum

枚举

extends

表明一个类型是另一个类型的子类型。对于类,可以是另一个类或者抽象类;对于接口,可以是另一个接口

final

用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量

finally

用于处理异常情况,用来声明一个基本肯定会被执行到的语句块

float

基本数据类型之一,单精度浮点数类型

for

一种循环结构的引导词

goto

保留关键字,没有具体含义

if

条件语句的引导词

implements

表明一个类实现了给定的接口

import

表明要访问指定的类或包

instanceof

用来测试一个对象是否是指定类型的实例对象

int

基本数据类型之一,整数类型

interface

接口

long

基本数据类型之一,长整数类型

native

用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的

new

用来创建新实例对象

package

private

一种访问控制方式:私用模式

protected

一种访问控制方式:保护模式

public

一种访问控制方式:共用模式

return

从成员方法中返回数据

short

基本数据类型之一,短整数类型

static

表明具有静态属性

strictfp

用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范

super

表明当前对象的父类型的引用或者父类型的构造方法

switch

分支语句结构的引导词

synchronized

表明一段代码需要同步执行

this

指向当前实例对象的引用

throw

抛出一个异常

throws

声明在当前定义的成员方法中所有需要抛出的异常

transient

声明不用序列化的成员域

try

尝试一个可能抛出异常的程序块

void

声明当前成员方法没有返回值

volatile

表明两个或者多个变量必须同步地发生变化

while

用在循环结构中

Java标识符命名一般遵守如下规范:

类名:通常使用名词,所有单词首字母大写。例如:StudentFamily。

方法名:通常使用动词,首单词字母小写,后续单词首字母大写。例如:openGrade()。

变量名:首单词字母小写,后续单词首字母大写。例如:studentName。

常量名:所有字母都大写。例如:PI

Java中的标点符号

Java使用的标点符号,如()"" '' + - * /:,等等是半角英文的,字符串中(字符串内部)的除外。新手要特别注意这点。

【全角和半角

☆全角:是一种电脑字符,占两个字节。

在全角中,字母和数字等与汉字一样占据着等宽的位置。

☆半角:是指一个字符占一个字节。

半角是ASCII方式的字符。

注释

Java 支持以下三种注释方式:一行注释以双斜杠“//”标识;多行注释包含在“/*”和“*/”之间;文档注释包含在“/**”和“*/”之间。

1)单行注释

以双斜杠“//”标识,只能注释一行内容,用在注释信息内容少的地方。

2)多行注释

包含在“/*”和“*/”之间,能注释很多行的内容。为了可读性比较好,一般首行和尾行不写注释信息(这样也比较美观好看),如图 2 所示。

注意:多行注释可以嵌套单行注释,但是不能嵌套多行注释和文档注释。

3)文档注释

包含在“/**”和“*/”之间,也能注释多行内容,一般用在类、方法和变量上面,用来描述其作用。注释后,鼠标放在类和变量上面会自动显示出我们注释的内容

注意:文档注释能嵌套单行注释,不能嵌套多行注释和文档注释,一般首行和尾行也不写注释信息。

如:

/**

文档注释的描述。

@作者(你的名字)

@版本(一个版本号或者一个日期)

*/

public class HelloWorld {

/* 这是一个Java程序

这是一个多行注释的示例

*/

public static void main(String[] args){

// 这是单行注释的示例

System.out.println("Hello World");

}

}

表达式、语句和语句块

Java表达式(Expression)是变量、常量、运算符、方法调用的序列,它执zhi行指定的计算并返回某个确定的值。

按操作数的数目可分为:有一元运算符(++、--)、二元运算符(+、-、>等等)和三元运算符(?:),它们分别对应一到三个操作数。

按运算结果可分为:算术表达式(12.1f+8.3f、i++)、关系表达式(3>7、3<7)、布尔逻辑表达式((5>4)&&true、!false)、位运算表达式(a=34^3)等。

语句(Statement)构成一个完整的执行单元。简单语句用分号(;)终止,如:

iValue = 10; // 赋值语句

double aValue = 8933.234; // 声明语句

System.out.println("Hello World!"); // 方法调用语句

Bicycle myBike = new Bicycle(); // 对象创建语句

控制流语句用于调节语句执行的顺序, 控制流语句包括条件语句、 循环结构 、条件语句、 switch case,后续介绍。

块(Blocks)也称为复合语句,由位于两个大括号之间的0个或者多个语句的组合,可以用于单个语句允许使用的任何地方。语法格式如下:

{

statement-list // 语句列表

}

statement-list 是由一个或者多个语句组成的列表,如果不存在 statement-list,则称该语句块是空的。

关于达式(Expression)、语句(Statement)和语句块(Blocks),可参见Expressions, Statements, and Blocks https://docs.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

变量

变量指在程序执行的过程中,在某个范围内其值可以发生改变的量。

变量定义格式:数据类型 变量名 = 初始化值;

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。变量按数据类型划分:

引用类型中还有一种特殊的null类型。

【基础类型与引用类型的区别是,基础类型只表示简单的字符或数字,引用类型可以是任何复杂的数据结构。基本类型仅表示简单的数据类型,引用类型可以表示复杂的数据类型,还可以操作这种数据类型的行为。Java虚拟机处理基础类型与引用类型的方式是不一样的,对于基本类型,java虚拟机会为其分配数据类型实际占用的内存空间,而对于引用类型变量,它以特殊的方式(类似C指针)指向对象实体(具体的值),这类变量声明时不会分配内存,只是存储了一个内存地址。】

变量按被声明的位置划分:

局部变量:方法或语句块内部定义的变量成员变量:方法外部、类的内部定义的变量。

注意:在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。参见 https://blog.csdn.net/weixin_36564655/article/details/79303765

创建字符串最简单的方式如下:

String greeting = "我的教程";

String类型是不可变的,其内容是不可修改的;如以下代码片段:

String s = "java";

s = "abc123";  //编译时报错

变量的作用域和生存期,在此简单一说,后续还将介绍:

变量的作用域:

作用域从变量定义的位置开始,到该变量所在的那对大括号结束。

生命周期:

变量从定义的位置开始就在内存中活了;

变量到达它所在的作用域的时候就在内存中消失了。

语句太长如何换行

Java默认自动换行功能,只要你不把标识符关键字断开就行,字串肯定不能直接断开写,可分成几部分用+运算符连接, 例如:

public class HelloWorld {

public static void //故意在此换行

main(String[] args) {

String str ="Java 可运行于多个平台," +

"Windows, Mac OS 及其他多种 UNIX 版本的系统。"; //字符串的换行

System.out.println(str);

}

}

使用BlueJ建立新类,名称为:HelloWorld,输入上述的代码,参见下图:

运行之,参见下图:

Java程序的组织结构

下面介绍Java程序的组织结构,对于这一部分,有个总体上的大体了解即可,先不必深究,随着学习的深入,将会逐步理解。

Java程序是由类和接口组成的。

一个简单的java程序,有一个类即可。

一个简单的类,可以仅包含一个入口方法public static void main(String[] args),如下:

public class类名{

  …

  publicstatic void main(String[] args){

  …

  }

}

一个比较完整java程序包括下列部分

package语句;

import语句;

publicClassDefinition; // 公共的类定义部分,至多只有一个公共类的定义

// java语言规定该java源程序的文件名必须与该公共类名完全一致

classDefinition;// 类定义部分,可以有0个或多个

interfaceDefinition;// 接口定义部分,可以有0个或多个

一般地,具有相同功能的类放在一个package中。

一个java源程序至多只能有一个公共类(public类)的定义。

若java源程序有一个公共类的定义,则该源文件名字必须与该公共类的名字完全相同。

若源程序中不包含公共类的定义,则源该文件名可以任意取名。

若一个源程序中有多个类定义,则在编译时将为每个类生成一个.class文件(以类名为文件名,以.class作为扩展名,扩展名也称为后缀)。

java源文件又称为编译单元。一个java文件可以包含多个类,但至多包含一个公共类(public类),作为该java文件的公用接口,公共类的名字和源文件的名字要相同,但后缀为.java。

一个java文件中,在不同类中,是可以有多个public static voidmain(String[] args)。

【public static voidmain(String[] args),这是 Java 程序的入口地址,Java 虚拟机运行程序的时候首先找的就是 main 方法。跟 C 语言里面的 main() 函数的作用是一样的。只有有 main() 方法的 Java 程序才能够被 Java 虚拟机运行,可理解为规定的格式。在前一篇中已介绍。】

示例如下:

package lc01;

public class cs {

cs(){

System.out.println("你好啊! world!");

}

public static void main(String[] args) {

new cs();

}

}

class a{

public static void main(String[] args){

}

}

但是,对于一个Java程序而言,往往只需要一个入口,也就是只需要有一个类包含main方法,而其他类都是用于被main方法直接或间接调用的。

如果一个java源程序中含有public的类,则文件名必须与类名一致,如果没有public类,则文件可以随意命名。一个文件中,public的类可以有零个或一个,非public的类可以有零个或多个。

又,public static void main()不是必须要放在public类中,如

package lc01;

class Dog{

Dog(){

System.out.println("I'm a dog.");

}

public static void main(String[] args){

new Dog();

new Cat();

}

}

class Cat{

Cat(){

System.out.println("I'm a cat.");

}

}

文件中没有一个public类,程序也能正常运行。

Java包、公共类与Java源码文件的关系

包(package)是一个为了方便管理组织java文件的组织和管理方式。包内包含有一组类。可以使用import关键字来导入一个包。例如使用import java.util.*就可以导入java.util包里面的所有类。所谓导入这个包里面的所有类,就是在import声明这个包名以后,在接下来的程序中可以直接使用该包中的类。

一个Java源代码文件必须有一个后缀名.java,此文件通常被称为编译单元。在编译单元内有且仅有一个public类,否则编译器就不会接受。该public类的名称必须与文件的名称相同(包括大小写,但不包括后缀名.java)。

当编译一个.java文件(即一个编译单元)时,在.java文件中的每个类都会有一个输出文件,而该输出文件的名称与.java文件中每个类的名称相同,只是多了一个后缀名.class。因此在编译少量.java文件之后,会得到大量的.class文件。每个.java文件都是一个构件,如果希望许许多多的这样的构件从属于同一个群组,就可以在每一个.java文件中使用关键字package。而这个群组就是一个包。

例如,假设文件的名称是Apple.java,这就意味着在该文件中有且仅有一个public类,该类的名称必须是Apple(注意大小写):

package fruit;

public class Apple

{

//...

}

上面的代码已经将Apple类包含在了fruit包中,现在如果有人想使用Apple或者是fruit中的任何其他public类,就必须使用关键字import来使fruit中的名称可用。

import fruit.*;

public class ImportApple

{

public static void main(String[] args)

{

Apple a=new Apple();

}

}

或者使用带包名的限定名称:

public class QualifiedApple

{

public static void main(String[] args)

{

fruit.Apple a=new fruit.Apple();

}

}

显然使用关键字import使代码更加简洁。

一个项目(Project)可以有几个包,包是为了更好的规划整理你写的各个类,将相关的类放在一个包中。包是为了更好的规划整理你写的各个类。

包(package)的作用

1 把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。

2 如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。

3 包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。

java使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(class)、接口、枚举(enumerations)和注释(annotation)等。

在Java源文件中,如果使用package语句,则package语句应作为第一条可执行语句(它的前面只能有注释或空行),指明该源文件定义的类所在的包。package语句的一般格式为:

package  包名;

包名可以是一个合法的标识符,也可以是若干个标识符加“.”分割而成,包的名字有层次关系,各层之间以点分隔。包层次必须与Java开发系统的文件系统结构相同。例如 packageaaa.bb.image

则此文件必须存放在aaa\bb\image目录下

如果源程序中省略了package语句,源文件中所定义命名的类被隐含地认为是无名包,即源文件中定义命名的类在同一个包中,但该包没有名字。

包(package)分为无名包和有名包,无名包的好处是无需对包作任何声明,可以拿来方便快捷使用,但也因为无名包没有名字,所以其它包无法用import语句导入访问无名包中的类,所以说无名包只适合在局部应用。而有名包就可以被其它包所访问,先用import语句导入,再用“包名.类名”方式访问指定包中指定的类。

Import语句

在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。

例如:import java.io.*;

导入包的方式:

①、单类型导入(single-type-import),例如import java.util.Date

②、按需类型导入(type-import-on-demand),例如import java.util.*

单类型导入比较好理解,我们编程所使用的各种工具默认都是按照单类型导包的,需要什么类便导入什么类,这种方式是导入指定的public类或者接口;

③、按需类型导入,比如 import java.util.*,可能看到后面的 *,大家会以为是导入java.util包下的所有类,其实并不是这样,我们根据名字按需导入要知道他是按照需求导入,并不是导入整个包下的所有类。按需类型导入是绝对不会降低Java代码的执行效率的,但会影响到Java代码的编译速度。

系统包

Java SE 提供了一些系统包,其中包含了 Java 开发中常用的基础类。在 Java 语言中,开发人员可以自定义包,也可以使用系统包,常用的系统包如下表:

说明

java.lang

Java 的核心类库,包含运行 Java 程序必不可少的系统类,如基本数据类型、基本数学函数、
字符串处理、异常处理和线程类等,系统默认加载这个包

java.io

Java 语言的标准输入/输出类库,如基本输入/输出流、文件输入/输出、过滤输入/输出流等

java.util

包含如处理时间的 Date 类,处理动态数组的 Vector 类,以及 Stack 和 HashTable 类

java.awt

构建图形用户界面(GUI)的类库,低级绘图操作 Graphics 类、图形界面组件和布局管理
(如 Checkbox 类、Container 类、LayoutManger 接口等),以及用户界面交互控制和事
件响应(如 Event 类)

java.awt.image

处理和操纵来自网上的图片的 Java 工具类库

java.wat.peer

很少在程序中直接用到,使得同一个 Java 程序在不同的软硬件平台上运行

java.net

实现网络功能的类库有 Socket 类、ServerSocket 类

java.lang.reflect

提供用于反射对象的工具

java.util.zip

实现文件压缩功能

java.awt.datatransfer

处理数据传输的工具类,包括剪贴板、字符串发送器等

java.sql

实现 JDBC 的类库

java.rmi

提供远程连接与载入的支持

java. security

提供安全性方面的有关支持

附录、

关于public static void main(String[] args) , 参见public static void main(String[] args) 是什么意思? https://www.cnblogs.com/guankelei/p/11327360.html

关于System.out.println(), 参见 你了解System.out.println()的真正含义吗?https://www.cnblogs.com/eniac12/p/5143160.html

Java程序设计基础相关推荐

  1. java程序设计基础(第3版)实验指导_清华大学出版社-图书详情-《Java程序设计基础(第5版)实验指导与习题解答》...

    本书是清华大学出版社出版的<Java程序设计基础(第5版)>的配套用书.全书共分为两部分,第一部分是上机实验指导,第二部分是主教材<Java程序设计基础(第5版)>中的习题解答 ...

  2. java程序设计基础实验_JAVA程序设计基础实验1.doc

    JAVA程序设计基础实验1 实 验 报 告 一课 程JAVA程序设计实验项目Java语言基础成 绩学 号XXXXXXXX姓 名 XXXX实验日期2012-9-17专业班级计算机科学与技术(嵌入式方向) ...

  3. Java程序设计基础知识点

    Java程序设计基础 一.Java语言概述 1.1 Java基本概念: 类是java程序的基本构成单位,重要的入口main方法,基本结构主类主方法 public class test{ public ...

  4. 第二章.Java程序设计基础

    Java程序设计基础 0.本章要点 1.Java标识符和关键字 标识符 标识符分类, 关键字 关键字分类 2. Java注释 单行注释 多行注释 文档注释 3.文档注释使用 0.本章要点 掌握常量的声 ...

  5. java程序设计陈国君_《JAVA程序设计基础(第6版)/陈国君》【价格 目录 书评 正版】_中国图书网...

    JAVA程序设计基础(第6版)/陈国君 节选 第3章Java语言基础 本章主要内容:  数据类型:  变量:  基本类型变量:  数据类型的转换规则:  从键盘输入数据的语句格式:  运算 ...

  6. java程序设计基础_陈国君版第五版_第七章例题

    java程序设计基础_陈国君版第五版_第七章例题 class Cylinder {private double radius;private int height;private double pi ...

  7. java程序设计基础_陈国君版第五版_第五章习题

    java程序设计基础_陈国君版第五版_第五章习题 import java.util.Scanner; public class Main5_1 {public static void main(Str ...

  8. java程序设计基础_陈国君版第五版_第四章例题

    java程序设计基础_陈国君版第五版_第四章例题 <pre name="code" class="java">public class Main4_ ...

  9. java程序设计基础_陈国君版第五版_第八章例题

    java程序设计基础_陈国君版第五版_第八章例题 class Person{private String name;private int age;public Person(){System.out ...

  10. java程序设计基础_陈国君版第五版_第十一章例题

    java程序设计基础_陈国君版第五版_第十一章习题 class MyThread extends Thread { private String who;public MyThread(String ...

最新文章

  1. php 记事本源代码_php实现记事本案例
  2. 使用 VisualVM 进行性能分析及调优
  3. 无服务器计算的黑暗面:程序移植没那么容易
  4. java logging api_Java Logging API - Tutorial
  5. python可以处理的文件类型_Python学习笔记之数据类型与文件处理
  6. php 父进程id,PHP pcntl_fork创建进程,复制父进程内存空间上下文
  7. Microsoft word 表格居中对齐方法
  8. OAI LTE系统搭建 -- OAI EPC
  9. 基于STM32开发板和Web网页的蔬菜大棚温湿度、光照等变化的动态柱形图表
  10. 图的遍历详解(广度优先和深度优先)
  11. 皮尔逊相关系数(Pearson Correlation)
  12. 【JAVA今法修真】 第七章 洞天风云起,索引混乱平
  13. 塞拉菲娜创始人 - 钰儿
  14. virgo tomcat
  15. VS2015 安装.NET Core
  16. 关于联想笔记本常见问题心得
  17. 解决ImportError: cannot import name 'imread' from 'scipy.misc'
  18. 开源入侵检测系统OSSEC搭建之一:服务端安装
  19. linux字符界面播放vcd,linux下刻录vcd的方法
  20. ABB IRC5 喷涂机器人简单操作

热门文章

  1. c语言课设作业 计算器,C语言课程设计-计算器设计
  2. Python可视化编辑,让Python 不再难懂
  3. ASCII码对照表(Unicode 字符集列表)
  4. Visual C++ MSDEV.exe 应用程序错误
  5. ios android 宏,iOS常用宏定义
  6. python如何实现清屏
  7. 主要由javascript实现的网页打字小游戏
  8. 有哪些论文降重的方法?
  9. pom中子模块project报红,插件运行Process terminated
  10. xp大容量u盘补丁_老电脑上大硬盘补丁