java入门新手教程(java从入门到实战)

Java 基础语法

一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。

  • 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

  • :类是一个模板,它描述一类对象的行为和状态。

  • 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。

  • 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。


第一个Java程序

下面看一个简单的Java程序,它将打印字符串 Hello World

实例

publicclassHelloWorld{/* 第一个Java程序 * 它将打印字符串 Hello World */publicstaticvoidmain(String[]args){System.out.println("Hello World"); // 打印 Hello World}}

运行实例 »

下面将逐步介绍如何保存、编译以及运行这个程序:

  • 打开Notepad,把上面的代码添加进去;

  • 把文件名保存为:HelloWorld.java;

  • 打开cmd命令窗口,进入目标文件所在的位置,假设是C:\

  • 在命令行窗口键入 javac HelloWorld.java 按下enter键编译代码。如果代码没有错误,cmd命令提示符会进入下一行。(假设环境变量都设置好了)。

  • 再键入java HelloWorld 按下Enter键就可以运行程序了

你将会在窗口看到 Hello World

C : > javac HelloWorld.javaC : > java HelloWorld Hello World
   

Gif 图演示:


基本语法

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

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

  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。

  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。

  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。

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


Java标识符

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

关于Java标识符,有以下几点需要注意:

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始

  • 首字符之后可以是字母(A-Z或者a-z),美元符($)、下划线(_)或数字的任何字符组合

  • 关键字不能用作标识符

  • 标识符是大小写敏感的

  • 合法标识符举例:age、$salary、_value、__1_value

  • 非法标识符举例:123abc、-salary


Java修饰符

像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:

  • 访问控制修饰符 : default, public , protected, private

  • 非访问控制修饰符 : final, abstract, strictfp

在后面的章节中我们会深入讨论Java修饰符。


Java变量

Java中主要有如下几种类型的变量

  • 局部变量

  • 类变量(静态变量)

  • 成员变量(非静态变量)


Java数组

数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。


Java枚举

Java 5.0引入了枚举,枚举限制变量只能是预先设定好的值。使用枚举可以减少代码中的bug。

例如,我们为果汁店设计一个程序,它将限制果汁为小杯、中杯、大杯。这就意味着它不允许顾客点除了这三种尺寸外的果汁。

实例

classFreshJuice{enumFreshJuiceSize{SMALL, MEDIUM , LARGE}FreshJuiceSizesize;}publicclassFreshJuiceTest{publicstaticvoidmain(String[]args){FreshJuicejuice = newFreshJuice(); juice.size = FreshJuice. FreshJuiceSize.MEDIUM ; }}

注意:枚举可以单独声明或者声明在类里面。方法、变量、构造函数也可以在枚举中定义。


Java关键字

下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。

关键字描述
abstract抽象方法,抽象类的修饰符
assert断言条件是否满足
boolean布尔数据类型
break跳出循环或者label代码段
byte8-bit 有符号数据类型
caseswitch语句的一个条件
catch和try搭配扑捉异常信息
char16-bit Unicode字符数据类型
class定义类
const未使用
continue不执行循环体剩余部分
defaultswitch语句中的默认分支
do循环语句,循环体至少会执行一次
double64-bit双精度浮点数
elseif条件不成立时执行的分支
enum枚举类型
extends表示一个类是另一个类的子类
final表示一个值在初始化之后就不能再改变了表示方法不能被重写,或者一个类不能有子类
finally为了完成执行的代码而设计的,主要是为了程序的健壮性和完整性,无论有没有异常发生都执行代码。
float32-bit单精度浮点数
forfor循环语句
goto未使用
if条件语句
implements表示一个类实现了接口
import导入类
instanceof测试一个对象是否是某个类的实例
int32位整型数
interface接口,一种抽象的类型,仅有方法和常量的定义
long64位整型数
native表示方法用非java代码实现
new分配新的类实例
package一系列相关类组成一个包
private表示私有字段,或者方法等,只能从类内部访问
protected表示字段只能通过类或者其子类访问子类或者在同一个包内的其他类
public表示共有属性或者方法
return方法返回值
short16位数字
static表示在类级别定义,所有实例共享的
strictfp浮点数比较使用严格的规则
super表示基类
switch选择语句
synchronized表示同一时间只能由一个线程访问的代码块
this表示调用当前实例或者调用另一个构造函数
throw抛出异常
throws定义方法可能抛出的异常
transient修饰不要序列化的字段
try表示代码块要做异常处理或者和finally配合表示是否抛出异常都执行finally中的代码
void标记方法不返回任何值
volatile标记字段可能会被多个线程同时访问,而不做同步
whilewhile循环

Java注释

类似于C/C ,Java也支持单行以及多行注释。注释中的字符将被Java编译器忽略。

publicclassHelloWorld{/* 这是第一个Java程序 *它将打印Hello World * 这是一个多行注释的示例 */publicstaticvoidmain(String[]args){// 这是单行注释的示例/* 这个也是单行注释的示例 */System.out.println("Hello World"); }}


Java 空行

空白行,或者有注释的行,Java编译器都会忽略掉。


继承

在Java中,一个类可以由其他类派生。如果你要创建一个类,而且已经存在一个类具有你所需要的属性或方法,那么你可以将新创建的类继承该类。

利用继承的方法,可以重用已存在类的方法和属性,而不用重写这些代码。被继承的类称为超类(super class),派生类称为子类(subclass)。


接口

在Java中,接口可理解为对象间相互通信的协议。接口在继承中扮演着很重要的角色。

接口只定义派生要用到的方法,但是方法的具体实现完全取决于派生类。


Java 源程序与编译型运行区别

如下图所示:

Java 对象和类

Java作为一种面向对象语言。支持以下基本概念:

  • 多态

  • 继承

  • 封装

  • 抽象

  • 对象

  • 实例

  • 方法

  • 重载

本节我们重点研究对象和类的概念。

  • 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。

  • :类是一个模板,它描述一类对象的行为和状态。

下图中男孩女孩为类,而具体的每个人为该类的对象:


Java中的对象

现在让我们深入了解什么是对象。看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。

拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。

对比现实对象和软件对象,它们之间十分相似。

软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。

在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。

Java中的类

类可以看成是创建Java对象的模板。

通过下面一个简单的类来理解下Java中类的定义:

publicclassDog{Stringbreed; intage; Stringcolor; voidbarking(){}voidhungry(){}voidsleeping(){}}

一个类可以包含以下类型变量:

  • 局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。

  • 成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。

  • 类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。

一个类可以拥有多个方法,在上面的例子中:barking()、hungry()和sleeping()都是Dog类的方法。


构造方法

每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。

在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。

下面是一个构造方法示例:

publicclassPuppy{publicPuppy(){}publicPuppy(Stringname){// 这个构造器仅有一个参数:name}}


创建对象

对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:

  • 声明:声明一个对象,包括对象名称和对象类型。

  • 实例化:使用关键字new来创建一个对象。

  • 初始化:使用new创建对象时,会调用构造方法初始化对象。

下面是一个创建对象的例子:

publicclassPuppy{publicPuppy(Stringname){//这个构造器仅有一个参数:nameSystem.out.println("小狗的名字是 : " name); }publicstaticvoidmain(String[]args){// 下面的语句将创建一个Puppy对象PuppymyPuppy = newPuppy("tommy"); }}

编译并运行上面的程序,会打印出下面的结果:

小狗的名字是 : tommy
   

访问实例变量和方法

通过已创建的对象来访问成员变量和成员方法,如下所示:

/* 实例化对象 */ObjectReference = newConstructor();/* 访问其中的变量 *
       /ObjectReference.variableName;/* 访问类中的方法 *
       /ObjectReference.MethodName();


实例

下面的例子展示如何访问实例变量和调用成员方法:

publicclassPuppy{intpuppyAge; publicPuppy(Stringname){// 这个构造器仅有一个参数:nameSystem.out.println("小狗的名字是 : " name); }publicvoidsetAge(intage){puppyAge = age; }publicintgetAge(){System.out.println("小狗的年龄为 : " puppyAge); returnpuppyAge; }publicstaticvoidmain(String[]args){/* 创建对象 */PuppymyPuppy = newPuppy("tommy"); /* 通过方法来设定age */myPuppy.setAge(2); /* 调用另一个方法获取age */myPuppy.getAge(); /*你也可以像下面这样访问成员变量 */System.out.println("变量值 : " myPuppy.puppyAge); }}

编译并运行上面的程序,产生如下结果:

小狗的名字是 : tommy小狗的年龄为 : 2变量值 : 2
   

源文件声明规则

在本节的最后部分,我们将学习源文件的声明规则。当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意这些规则。

  • 一个源文件中只能有一个public类

  • 一个源文件可以有多个非public类

  • 源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。

  • 如果一个类定义在某个包中,那么package语句应该在源文件的首行。

  • 如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。

  • import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。

类有若干种访问级别,并且类也分不同的类型:抽象类和final类等。这些将在访问控制章节介绍。

除了上面提到的几种类型,Java还有一些特殊的类,如:内部类、匿名类。


Java包

包主要用来对类和接口进行分类。当开发Java程序时,可能编写成百上千的类,因此很有必要对类和接口进行分类。

Import语句

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

例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类

import java.io.*;
   

一个简单的例子

在该例子中,我们创建两个类:EmployeeEmployeeTest

首先打开文本编辑器,把下面的代码粘贴进去。注意将文件保存为 Employee.java。

Employee类有四个成员变量:name、age、designation和salary。该类显式声明了一个构造方法,该方法只有一个参数。

Employee.java 文件代码:

importjava.io.*; publicclassEmployee{Stringname; intage; Stringdesignation; doublesalary; // Employee 类的构造器publicEmployee(Stringname){this.name = name; }// 设置age的值publicvoidempAge(intempAge){age = empAge; }/* 设置designation的值*/publicvoidempDesignation(StringempDesig){designation = empDesig; }/* 设置salary的值*/publicvoidempSalary(doubleempSalary){salary = empSalary; }/* 打印信息 */publicvoidprintEmployee(){System.out.println("名字:" name); System.out.println("年龄:" age); System.out.println("职位:" designation); System.out.println("薪水:" salary); }}

程序都是从main方法开始执行。为了能运行这个程序,必须包含main方法并且创建一个实例对象。

下面给出EmployeeTest类,该类实例化2个 Employee 类的实例,并调用方法设置变量的值。

将下面的代码保存在 EmployeeTest.java文件中。

EmployeeTest.java 文件代码:

importjava.io.*;publicclassEmployeeTest{publicstaticvoidmain(Stringargs[]){/* 使用构造器创建两个对象 */EmployeeempOne = newEmployee("RUNOOB1"); EmployeeempTwo = newEmployee("RUNOOB2"); // 调用这两个对象的成员方法empOne.empAge(26); empOne.empDesignation("高级程序员"); empOne.empSalary(1000); empOne.printEmployee(); empTwo.empAge(21); empTwo.empDesignation("菜鸟程序员"); empTwo.empSalary(500); empTwo.printEmployee(); }}

编译这两个文件并且运行 EmployeeTest 类,可以看到如下结果:

$ javac EmployeeTest.java
   

要有扎实的 Java 基础,只有不断地坚持学习,JAVA的初学者才能快速成为大神,在职场脱颖而出。java是全世界运用最广泛的语言,为了需要人才也是最多的,JAVA新手朋友可以加下我的Java入门到实战群398170802,群里有免费的最新的全套JAVA学习资料,还有很多新手交流技术问题,共同学习,若有问题也可以随时问我哦。

(0)

相关推荐

  • IPad入门新手教程--设置篇

    "设置"自定iPad应用程序.设定日期和时间.配置网络连接以及输入其他iPad偏好设置.下面就让我们一步一步来告诉大家这都是做什么的. 步骤/方法 01 进入设置 在主菜单中找到设 ...

  • IPad入门新手教程--备忘录篇

    利用备忘录摘要记下任何事项和每项琐事,然后不论你到哪里去,它们都随身同行. iPad 是如此轻巧纤薄,你可以把它带到会议中.讲座内甚至杂货店. iPad 显示屏有足够宽敞的空间,让你记下各式备忘和工作 ...

  • IPad入门新手教程--iBooks篇

    你可以从iTunes应用程序商店免费下载得iBook阅读器,iBook不仅仅是一个绝妙的电子书阅读器,它同时还是一个方便你随时选购书籍的好助手. 步骤/方法 01 你可以从App Store商店免费下 ...

  • IPad入门新手教程--Safari篇

    iPad 搭载的是Safari浏览器,大触摸屏可以方便冲浪,整个页面可以一次呈现,通过手指在屏幕上便可进行翻页.滚动,也可对相片进行放大缩小操作,支持网页 缩略,体验更为直观. 步骤/方法 01 进入 ...

  • Cubase8新手入门使用教程-音频驱动设置

    对Cubase8使用两眼一抹黑的新手入门使用教程. 操作方法 01 在使用Cubase8之前,要对Cubase的音频驱动进行设置.首先打开Cubase8,点击设备: 02 点开设备后选择设备设置: 0 ...

  • hadoop入门之通过java代码实现将本地文件上传到hadoop的文件系统

    第一步:首先搭建java的编译环境。创建一个Java Project工程,名为upload。 第二步:选中所需的Jar包。 选中JRE System Library 选择BuildPath Confi ...

  • PicsArt入门图文教程 ios版 PicsArt做锁屏图文步骤

    PicsArt也是一门学问,PicsArt的教程现在网上很难找到,西西没办法只有自己来原创咯,下边给大家分享一下入门图文教程,适合新手阅读! PicsArt入门图文教程: 不用谢我 我是雷锋

  • PicsArt入门图文教程

    PicsArt也是一门学问,下边给大家分享一下入门图文教程,适合新手阅读! PicsArt入门图文教程:

  • 3DMAX入门基础教程

    3DMAX基础入门详细教程~~~ 操作方法 01 你安装好软件3DS MAX后,按下3DS的启动标志,就进入了它的总界面.大家可以从总界面图了解下3DS MAX.它分为菜单栏,工作视窗,命令面板,动画 ...

  • 怎么设置无线路由?WIFI无线路由器入门设置教程

    现在买本本的人多了,也都为了本子配备了无线路由器,在这里做一个简单的无线路由器入门设置教程,教大家怎么使用无线路由器、如何设置,帮大家早早无线上网:) 如果感觉本文比较实用,欢迎收藏,以便将来需要时翻 ...