java快速入门_Java概念快速入门1

java快速入门

配置。 入门

要开始使用Java,必须下载并安装Sun的JDK(Java开发工具包)版本。

撰写本文时,最新版本是JDK 6,可从以下位置下载

http://java.sun.com/javase/downloads/index.jsp

我将使用JDK 5(更新8)

但在大多数情况下,它们也会提供在JDK 1.4编译器上也能使用的代码。

我还将在1.6编译器上测试一些代码。

Java开发套件

这是Java程序员使用的工具。

JDK的主要组件是以下编程工具

javac-编译器,它将java源代码(.java文件)转换为Java字节码(.class文件)。

java-这将执行java类文件。 它启动Java应用程序。

appletviewer-不需要Web浏览器即可运行和调试applet。

jar-Java归档程序,它将相关的类库(和其他文件)打包到一个JAR文件中。

这是Java程序的可执行文件。

javadoc-此工具使用源代码中的注释生成文档。

jdb-调试器

JDK包含(JRE)Java运行时环境。 它由Java虚拟机和将在生产环境中提供的类库组成,其中包括对开发人员有用的其他库。

设置类路径。

成功下载并安装JDK后,您需要设置类路径。

默认情况下,无需设置路径即可访问JDK标准API的软件包。

只能在命令行中或在与包含类的Jar文件相关联的清单中设置用户定义的包和库的路径(第二种方法是

在获取jar文件时会被重新访问)。

如何设置类路径取决于您使用的操作系统。

您可以在此处获取有关如何为您的操作系统版本设置类路径的信息

http://java.sun.com/j2se/1.5.0/docs/...classpath.html

下面的文章是对类路径的全面讨论。

http://mindprod.com/jgloss/classpath.html

当我们看到一些JDK工具正在使用时,我们还将在以后修改设置。

您将需要使用诸如TextPad,JCreator,notepad ++等的接口程序来编写代码。

重要的是选择一个您了解的工具。 还有像Netbeans(在Sun站点上可用)之类的IDE,但是,仅在您完全熟悉该语言的基本功能之后,您才想使用它们。

编译Java代码。

如前所述,javac工具是用于编译Java类的工具。 您可以通过在提示符下键入javac FileName.java来调用它。 如果您正在使用诸如TextPad之类的程序,则只需单击“编译Java”按钮,然后将调用该工具。 如果代码没有任何错误,则对于上面的示例,javac会生成一个名为FileName.class的类文件。 如果代码有错误,它们将显示在命令提示符下。

不需要在文件中具有公共类定义。 在这种情况下,文件的名称应与不应公开的类和接口的名称不同。 换句话说,没有公共类的文件可以具有与文件中任何类都不匹配的名称。

这是因为每个文件最多允许一个公共类定义。

此类的名称应与文件名匹配。 如果有多个公共类定义,则编译器将接受带有文件名的类,并在定义另一个类的行给出错误。 一个空白文件可以正确编译(是有效的Java源文件)。

javac错误消息

编译错误对程序员来说非常重要。 如果编译器在编译期间输出错误消息,则不会生成类文件。 编译错误包括发生错误的行号。

如果您的界面程序有行号(一个好的界面程序应该有行号,并且您应该始终启用它们),这将非常有用。 当寻求帮助时(例如在Java论坛中总是包含错误消息)。

下一部分将介绍Java基础知识并将包含Java程序。 因此,请确保您可以在计算机上编译并运行Java程序。

Java基础

这些文章中的方法是尽快开始编写程序,然后在以后扩展编程的主要功能。 如果有人具有编写程序的经验,就可以轻松理解这些功能。

语言结构

Java编程语言是一种高级的面向对象的语言,它是基于类的,并支持并发。 它也是强类型的,即可以区分编译时错误

(可以并且必须在编译时检测到),以及在运行时发生的运行时错误(异常)。

语言区分大小写和自由格式(语句可以驻留在行的任何位置,可以跨越行或在标记之间允许任意数量的空格)

语句以分号(;)终止。 仅包含分号的Java文件是有效的Java源文件。

为了运行Java应用程序,正在运行的类必须包含具有以下签名的main方法:

public static void main(String[] args)
或(自1.5起)
public static void main(String ... args) 
公共和静态的顺序可以互换。 关键词

从jdk 1.5开始,以下是Java关键字集。

{为新的,切换的,断言的,断言的,默认的,摘要,继续

包,已同步,布尔值,执行,转到,私有,此,中断,

double,实现,保护,throw,byte,else,import,public,

抛出,case,enum,instanceof,return,transient,catch,extends,

int,short,try,char,final,interface,static,void,class,

最后,长,strictfp,易失性,常量,浮点数,本机,超级,而}

const和goto被保留,即使它们当前不是

用过的。 稍后我们将介绍其他关键字。

原始类型

Java具有以下八种原始类型:

布尔,字节,短,字符,整数,长,浮点和双精度。

你应该有一张他们的桌子

最小值,最大值和初始值。

文字在编译时会检查其大小。

byte b = 128; //will not compile (Maximum value of byte is 127) but
byte c = 127; //will compile
除char以外的所有数字数据类型都是带符号的,而char是唯一的无符号整数类型。 文字

现在,我要说一个字面量是原始类型(源代码表示形式)或null或String类型的值(稍后将进行检查)。

文字不是关键字。 即null,true,false等不是关键字。

统一码

如果您想成为一名认真的程序员,学习一些unicode是明智的。

现在,我要说的是Unicode字符可以出现在Java代码的任何地方。 它们以\ u为前缀,长度为四个字符。 例如,“ a”由\ u0061表示。 您可以将“ a”替换为“ \ u0061”

在您的代码中,它将仍然编译。 因此,以下内容是等效的:

boolean b = true;
boole\u0061n b = true;
它们是十六进制字符(0-F)。 分离器

以下九个ASCII字符是分隔符(标点符号):

(){} []; ,。

经营者

完整的运算符集是:

=> <! 〜? :

== <=> =!= && || ++-

+-* /&| ^%<< >> >>>

+ =-= * = / =&= | = ^ =%= << = >> = >>> =

算术运算符-*,/,%,+,-只能应用于数字类型(至少为int),但+可以应用于字符串文字。

扩展赋值运算符和++-运算符执行隐式类型转换。

byte a = 12;
a = a + 1;
+运算符将不编译int是必需的,但是
byte a = 12;
a++;
将编译,因为++执行隐式类型转换

注意

byte b = 127;
b++;
System.out.println(b);
将打印-128(最小字节)。 这是因为在Java中没有上溢/下溢错误,但是值只是简单地(无声地)环绕。

运算符&&和|| 是短路逻辑运算符。 如果第一个操作数的值足以确定整个表达式的值,则不评估右侧。

boolean s = true;
    boolean t = true;
    if((t = false) && (s = false) ) {
        ;
    }
    System.out.println(t);
    System.out.println(s);
版画
false
true
t已更改,但s并未更改,因为未执行(s = false)部分。

您应该尝试与其他运算符(尤其是移位运算符)一起理解它们的功能。

您还应该注意每个运算符的关联性。

例如

System.out.println( 1 + 2 + "3" ); // Prints 33
System.out.println( "1" + 2 + 3 ); // Prints 123
因为+是从左到右的关联。

讨论完继承后,我们将看一下instanceof运算符。

身份标识

标识符是您为变量指定的名称。 Java标识符必须以字母,美元符号($)或下划线(_)开头。 后面的字符可以是字母,$,_或数字。标识符不能具有Java关键字的名称或文字。

允许嵌入关键字或文字

Java类型。

每个变量和每个表达式都具有在编译时已知的类型(强类型)。

Java中有两种广泛的类型:原始类型和引用类型。

类型:

PrimitiveTypeReferenceType

PrimitiveType:

NumericType ,布尔值

ReferenceType:类,数组,接口

NumericType:

积分类型浮点类型

IntegralType:int,long,char,byte,short

FloatingPointType:浮点数,双精度

这就是我现在将要介绍的原始类型的全部内容。 接下来是Class类型。

Java类 什么是类?

类定义了新的引用类型以及如何实现该引用类型。

目前查看类的最好方法是,它是用于制作对象的模板。 因此,类不同于对象。 对象就像类的实现。 您可以定义一个类,并使用同一类创建许多不同的对象。 类是在编译时创建的,而对象是在运行时在内存中创建的。 类指定对象可以执行的属性和动作。 将属性指定为字段,而将动作指定为方法。 在程序开发过程中,设计类非常重要。 如果精心设计类以及类之间的关系,您将发现解决Java真正的问题很容易。 类关系是通过继承和组合指定的。 这两个非常重要,应该掌握。

封装形式

封装的简单定义是组合元素以创建新实体。 这个想法是隐藏某些信息,以使关注点分离。 代码被分组到模块中,这样模块外就没有代码了。 Java直接支持封装,因为您编写的每一行代码都必须在某个类中。 类外没有代码。 这将带来一些后果,并且在此过程中将变得显而易见。 结果是,如果代码没有类,则无法创建任何对象。

接下来,我们将发现包之外没有类。

Java包

包是一种根据文件的功能,可用性和所属类别将文件组织到不同目录中的方法。 这具有易于维护,组织的优点,并且(额外)使我们能够在不同的程序包中重用相同的类名。 将包视为包含类的文件夹。 如果在文本编辑器中键入以下内容并将其另存为PackageTest.java

 
 package test;
class PackageTest {
      public static void main(String[] args) {
           System.out.println("Tested");
      }
}  
当您编译它时,它可以正常编译,但是当您尝试运行它时,您将得到一个异常,说明类test / PackageTest

没找到。 但是,如果您创建一个名为test的文件夹,然后将该文件放入该文件夹中,然后编译并运行该文件,则会在控制台上打印“ Tested”。 JVM需要完全限定的类名来加载该类,因此您需要使用java test.PackageTest来运行它。 或者,您可以使用classpath变量指定.class的位置。

要使用包的类,请使用import语句将它们导入代码中。 包声明在导入语句之前。 已经创建了许多软件包供您导入并在您的代码中使用。

您应该始终尝试利用Java api中的类

在这里 。 编译器会自动为您导入java.lang包。 类结构

类声明以修饰符开头,修饰符可以是

公共,受保护,私有,抽象,静态,strictfp,最终。

为了让我们开始,我们将首先查看public和protected修饰符。

Java类封装在包中。 一个包中的类只能访问另一个包中的公共类。 受保护的类只能在已定义的包中访问。 如果不包括修饰符,则认为是受保护的访问。 该类放在为您自动创建的默认包中。

您应该始终将类放在包中。 这是Java类的其余结构:

修饰符类ClassName {

成员(方法,字段,嵌套类和接口)

构造函数

静态初始化器

}

这三个组件中的每个组件都是可选的。

静态关键字。

如果在类内部将变量(包括方法)定义为静态,则该变量属于该类,但不属于该类的实例(对象)(创建对象时,不会为静态变量分配内存)。

因此,无需创建该类的对象即可访问静态变量。

  
package religion;
class Church {
static int members;
public static void main(String[] args) {
System.out.println(members); //or Church.members
}
}  
在此代码中,在main方法内部未创建任何对象。 静态变量成员可以在main中访问,也可以通过类名称Church访问。 主要方法也是静态方法。 这非常重要,因此JVM始终可以通过类名称访问main方法。 静态变量在编译时而不是在运行时解析(记住强类型)。 如果不初始化静态变量,则编译器会为您初始化它。
package religion;
class Church {
static int members;
public static void main(String[] args) {
System.out.println(Church.members);
}
} 
将0打印到控制台,因为int在初始化时默认为0。

在静态上下文中只能访问静态变量。

package religion;
class Church {
static int members;
int pastors;//pastors is not static
public static void main(String[] args) {//main is a static context(modified by keyword static)
System.out.println(Church.members);
System.out.println(Church.pastors);//! will not compile
}
} 
非静态变量牧师不能从静态上下文中引用

始终在程序运行之前首先解析静态初始化程序

package religion;
class Church {
static int members;
public static void main(String[] args) {
System.out.println(Church.members);
System.out.println(Church.pastors);
}
static int pastors = 5;
} 
在控制台上打印两个0和5。

Math类包含许多可以重用的静态方法。 它位于java.lang包中,因此您无需导入任何内容即可使用它。

package tests;
class EasyMath {
public static void main(String[] args) {
System.out.println(Math.PI); //static constant
System.out.println(Math.pow(2, 6)); //static mothod
}
}
您可以使用static关键字作为声明全局变量的方式。 创建对象。

到目前为止,我们还没有创建任何对象。 对象是在运行时从在编译时创建的类中创建的。 new关键字用于创建对象。

  
package religion;
class Church {
static int pastors;
public static void main(String[] args) {
//System.out.println(Church.pastors);
Church c = new Church();
}
}  
在这里,我们创建了一个新对象。 一个叫c的教堂。 请注意,在创建c之前先创建了牧师。 我们尚未在c中放入任何内容。 如果我们创建另一个教堂,它将始终打印与c相同的牧师值,因为两者共享相同的类且具有相同的静态变量。
  
package religion;
class Church {
int pastors;
public static void main(String[] args) {
Church c = new Church();
System.out.println(c.pastors);
}
}  
现在,牧师是一个实例字段。 成员也由编译器自动初始化,因此上面的代码打印0

到屏幕。 注意,牧师不再可以通过类名访问,而只能通过取消引用对象c来访问。

我们可以将更多不同数据类型的变量添加到字段区域,每个变量都将成为创建的任何对象的一部分

从那个班级。

方法

方法具有返回类型和签名。 签名由方法名称,参数数量和参数顺序组成。 一个方法最多可以返回一个值。 同一类中不能有两个具有相同签名的方法。

因此请注意

void a (int x, double y) 
void a (double x, int y) 
有不同的签名。 方法中的参数变量名(上面的x和y)必须是不同的。

我们已经看过了类方法,它们是静态方法。 请记住,它们只能访问静态变量。

实例方法(非静态)在特定对象的上下文中执行。 它们对当前对象的实例变量进行操作,并可以使用“ this”关键字引用对象本身。

  
package religion;
class Church {
int pastors;
public static void main(String[] args) {
Church c = new Church();
c.setPastors(10);
c.printPastors();
}
public void setPastors(int p) { //returns nothing takes one int
pastors = p;
// or this.pastors = p;
}
public int getPastors() { //returns int takes nothing
return pastors;
}
public void printPastors() { //returns nothing takes nothing
System.out.println(pastors);
}
}  
main方法是应用程序的起点,具有签名public static void main(String [] args)。 这是Java解释器执行应用程序时调用的第一个方法。 建设者

类的另一部分是构造函数。 请注意,与C ++不同,java中没有析构函数。 构造函数用于创建对象。 使用new关键字创建类的新实例时,将调用该类的构造函数。

构造函数用于初始化对象的实例变量(字段)。 它们与方法相似,但有一些重要区别。 构造函数没有返回类型(值始终是此对象)。 它们必须与所在类具有相同的名称。每个类至少具有一个构造函数。 如果您没有为类定义构造函数(就像我们在上面的示例中所做的那样),则编译器会自动创建一个默认的无参数构造函数。 默认的构造函数调用默认的父构造函数(我们将在继承的下一课中对此进行检查),并将所有实例变量初始化为默认值(数字类型为零,对象引用为null,布尔值为false)。 请注意,仅当没有构造函数时才创建默认构造函数。 如果为类定义任何构造函数,则不会自动创建默认构造函数。 所以

package religion;
class Church {
public static void main(String[] args) {
    Church c = new Church();//calls default no-arg constructor automatically created by compiler
}
} 
编译但是
package religion;
class Church {
public Church(long a) {
}
public static void main(String[] args) {
    Church c = new Church();//calls default no-arg constructor automatically created by compiler
}
} 
将不会编译(无法解析符号变量:构造函数Church()),因为构造函数的存在会停止自动

创建无参数构造函数。 您可以根据需要定义尽可能多的构造函数,只要它们具有不同的签名即可。

  
package religion;
class Church {
int pastors;
public Church() {// initializes pastors to 0
pastors = 0;
}
public Church(int pastors) {// initializes pastors to the given value
    this.pastors = pastors;
}
public static void main(String[] args) {
    Church c1 = new Church();
    c1.printChurch();
    Church c2 = new Church(10);
    c2.printChurch();
public void printChurch() {
    System.out.println("Church with :" + getPastors() + " Pastors");
}
public int getPastors() {
    return pastors;
}
}
在运行时,您可以根据提供给new运算符的参数的数量和顺序来指定要调用的构造函数。 new运算符基本上会调用构造函数。 注意上面的第二个构造函数:
public Church(int pastors) {// initializes pastors to the given value
this.pastors = pastors;
} 
参数“ pastors”的名称与该类的成员变量的名称冲突。 这将隐藏成员变量,因为它比方法参数更远离上下文声明。 要访问成员变量,请使用“ this”关键字。 “ this”是指当前的对象实例。

您应该使用构造函数仅初始化变量。

构造函数可以在相同的类(或不同的类)中调用另一个构造函数。有关继承的信息,将在下一个类中进行检查。

为此,请使用“ this”关键字。 这必须是构造函数的第一行。

  
package religion;
class Church {
int pastors;
int members;
public Church() {
pastors = 0;
members = 0;
}
public Church(int pastors) {
this(); // calls the default constructor so members is also initialized to 0.
this.pastors = pastors;
}
public Church(int pastors, int members) {
this(pastors); // calls the one-arg constructor so pastors has been initialized.
this.members = members;
}
}  
如果对它的调用不是构造函数的第一行,则将得到错误调用,它必须是构造函数中第一条语句。final关键字

使用修饰符表示一个变量最多被分配一个值。 编译器不允许您两次将值赋值给最终变量。

package religion;
class Church {
final int pastors;
public Church() {
pastors = 0;
}
public Church(int pastors) {
this.pastors = pastors;
this.pastors = 2; //! will not compile
}
} 
最终变量可以在类中的任何位置声明。 它们可以是静态的也可以是非静态的。 允许定义最终变量而不给它分配任何内容,然后在上下文中最多一次在代码中对其进行初始化。

如果在不初始化最终变量的情况下将其声明为类的成员变量,则必须在该类的每个构造函数中初始化该最终变量,否则编译器将给出错误信息。

package religion;
class Church {
final int pastors;
public Church(int pastors) {
this.pastors = pastors;
}
public Church() { //! will not compile (variable pastors might not have been initialized)
}
}
接下来,我们看一下继承,但首先看一下java.lang.String类。

翻译自: https://bytes.com/topic/java/insights/740375-quick-introduction-java-concepts-1-a

java快速入门

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值