俩周的课后时间自学java

来源:互联网 发布:windows窗口程序开发 编辑:程序博客网 时间:2024/05/18 02:17

Java的起源

Java是由Sun Microsystems公司于 19955月推出的Java面向对象程序设计语言(以下简称Java语言)和Java平台的总称。由James Gosling和同事们共同研发,并在1995年正式推出。Java最初被称为Oak,是1991年为消费类电子产品的嵌入式芯片而设计的。1995年更名为Java,并重新设计用于开发Internet应用程序。用Java实现的HotJava浏览器(支持Javaapplet)显示了Java的魅力:跨平台、动态的WebInternet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器均支持Javaapplet。另一方面,Java技术也不断更新。(2010Oracle公司收购了Sun Microsystems公司)

Java 的特点

Java的典型特点 

1. 平台无关性 

平台无关性是指Java能运行于不同的平台。Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。使 Java编写的程序能在世界范围内共享。Java的数据类型与机器无关,Java虚拟机(Java Virtual Machine)是建立在 硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。 

2. 安全性 

Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指 针侵入系统。Java对程序提供了安全管理器,防止程序的 非法访问。 

3. 面向对象 

Java 将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译,然后 通过上述特性反复利用。程序员只需把主要精力用在类和接口的设计和应用上。Java 提供了众多的一般对象的类,通 过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类为Object 类, Object 类功能强大,经常会使用到它及其 它派生的子类。 

4. 分布式 

Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTPFTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。 

5. 键壮性 

Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自已操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、 数组边界检测、 异常出口、 Byte code校验。

 

 

 

Arrays类应用

Arrays类是 Java API中提供的类,在 java.util包中, Arrays类中提供的方法可直接实现数组的排序、搜索等。常用方法如下:

1toString

转换数组:将指定数组内容转换为字符串形式

2fill

给数组赋值:通过fill方法。

3sort

对数组排序:通过sort方法,默认按升序。

4equals

比较数组:通过equals方法比较数组中元素值是否相等。

5binarySearch

二分查找:使用二分搜索法来搜索指定数组的范围

 

示例代码:

import java.util.Arrays;

public class HelloWorld {

    public static void main(String[] args) {

       int[]array = new int[5];

      // 填充数组

      /* Arrays.fill a1, value ;

        作用:填充 a1数组中的每个元素都是value

      */

      Arrays.fill(array,5);

      System.out.println("填充数组:Arrays.fill(array, 5)");

      System.out.println(Arrays.toString(array));

 

      // 将数组的第3和第4个元素赋值为8

      /* Arrays.fill a1, fromIndex,toIndex,value;

        作用:填充 a1数组中的从索引为 fromIndex开始到索引为 toIndex-1为止每个元素都是 value

      */

      Arrays.fill(array,2, 4, 8);

      System.out.println("将数组的第2和第3个元素赋值为8Arrays.fill(array, 2, 4, 8)");

      System.out.println(Arrays.toString(array));

      

       int[]array1 = { 7, 8, 3, 2, 12, 6, 3, 5, 4 };

      // 对数组的第3个到第7个进行排序

      /* Arrays.sort a1, fromIndex, toIndex;

        作用:对 a1数组中的从索引为fromIndex开始到索引为 toIndex-1为止每个元素排序

      */

      Arrays.sort(array1,2, 7);

      System.out.println("对数组的第2个到第6个元素进行排序:Arrays.sort(array,2,7)");

      System.out.println(Arrays.toString(array1));

 

      // 对整个数组进行排序

      Arrays.sort(array1);

      System.out.println("对整个数组进行排序:Arrays.sort(array1)");

      System.out.println(Arrays.toString(array1));

 

      // 比较数组元素是否相等

      System.out.println("比较数组元素是否相等:Arrays.equals(array, array1):" + "\n"

             + Arrays.equals(array,array1));

       int[]array2 = array1.clone();

      System.out.println("克隆后数组元素是否相等:Arrays.equals(array1, array2):" + "\n"

             + Arrays.equals(array1,array2));

 

      // 使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确)

      Arrays.sort(array1);

      System.out.println("元素3array1中的位置:Arrays.binarySearch(array1,3)"

             + "\n" + Arrays.binarySearch(array1,3));

 

      // 如果不存在就返回负数

      System.out.println("元素9array1中的位置:Arrays.binarySearch(array1,9)"

             + "\n" + Arrays.binarySearch(array1,9));

   }

}

 

运行结果:

填充数组:Arrays.fill(array, 5)
[5, 5, 5, 5, 5]
将数组的第2和第3个元素赋值为8Arrays.fill(array, 2, 4, 8)
[5, 5, 8, 8, 5]
对数组的第2个到第6个元素进行排序:Arrays.sort(array,2,7)
[7, 8, 2, 3, 3, 6, 12, 5, 4]
对整个数组进行排序:Arrays.sort(array1)
[2, 3, 3, 4, 5, 6, 7, 8, 12]
比较数组元素是否相等:Arrays.equals(array, array1):
false
克隆后数组元素是否相等:Arrays.equals(array1, array2):
true
元素3array1中的位置:Arrays.binarySearch(array1,3)
1
元素9array1中的位置:Arrays.binarySearch(array1,9)
-9

使用 foreach 操作数组

foreach 并不是Java中的关键字,是 for语句的特殊简化版本,在遍历数组、集合时, foreach更简单便捷。从英文字面意思理解 foreach也就是“ for 每一个的意思,那么到底怎么使用 foreach语句呢?

语法:

我们分别使用 for  foreach 语句来遍历数组

运行结果:

看到 foreach 的方便了吧!!

留个思考问题给大家:如果想在 foreach语句中获取数组元素的下标,该如何做呢??

Java 中的二维数组

所谓二维数组,可以简单的理解为是一种特殊的一维数组,它的每个数组空间中保存的是一个一维数组。

那么如何使用二维数组呢,步骤如下:

1声明数组并分配空间

或者

如:

2赋值

二维数组的赋值,和一维数组类似,可以通过下标来逐个赋值,注意索引从 0开始

也可以在声明数组的同时为其赋值

如:

3处理数组

二维数组的访问和输出同一维数组一样,只是多了一个下标而已。在循环输出时,需要里面再内嵌一个循环,即使用二重循环来输出二维数组中的每一个元素。如:

 

运行结果:

需要了解的:在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数。如果每行的列数不同,则创建的是不规则的二维数组,如下所示:

运行结果为:

如何定义 Java 中的方法

所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块。

一般情况下,定义一个方法的语法是:

其中:

1访问修饰符:方法允许被访问的权限范围,可以是 publicprotectedprivate甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面章节中会详细讲解滴

2返回值类型:方法返回值的类型,如果方法不返回任何值,则返回值类型指定为 void;如果方法具有返回值,则需要指定返回值的类型,并且在方法体中使用return语句返回值

3方法名:定义的方法的名字,必须使用合法的标识符

4参数列表:传递给方法的参数列表,参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开 

根据方法是否带参、是否带返回值,可将方法分为四类:

Ø 无参无返回值方法

Ø 无参带返回值方法

Ø 带参无返回值方法

Ø 带参带返回值方法

Java 中无参无返回值方法的使用

如果方法不包含参数,且没有返回值,我们称为无参无返回值的方法。

方法的使用分两步:

第一步,定义方法

例如:下面代码定义了一个方法名为 show,没有参数,且没有返回值的方法,执行的操作为输出 “ welcome to imooc. ”

注意哦:

1方法体放在一对大括号中,实现特定的操作

2方法名主要在调用这个方法时使用,需要注意命名的规范,一般采用第一个单词首字母小写,其它单词首字母大写的形式

第二步,调用方法

当需要调用方法执行某个操作时,可以先创建类的对象,然后通过 对象名.方法名();  来实现(关于类和对象的概念在后面章节中会详细讲解滴,先熟悉语法,表着急哦~~

例如:在下面的代码中,我们创建了一个名为 hello的对象,然后通过调用该对象的 show( ) 方法输出信息

运行结果为:  welcome to imooc.

Java 中无参带返回值方法的使用

如果方法不包含参数,但有返回值,我们称为无参带返回值的方法。

例如:下面的代码,定义了一个方法名为 calSum,无参数,但返回值为 int类型的方法,执行的操作为计算两数之和,并返回结果

calSum( ) 方法中,返回值类型为 int 类型,因此在方法体中必须使用 return返回一个整数值。

调用带返回值的方法时需要注意,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。如:

运行结果为: 两数之和为:17

不容忽视的小陷阱

1如果方法的返回类型为 void,则方法中不能使用 return返回值!

2方法的返回值最多只能有一个,不能返回多个值

3方法返回值的类型必须兼容,例如,如果返回值类型为int,则不能返回 String型值

Java 中带参无返回值方法的使用

有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行。例如,现实生活中电饭锅可以实现煮饭的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真是的巧妇难为无米之炊了。我们可以通过在方法中加入参数列表接收外部传入的数据信息,参数可以是任意的基本类型数据或引用类型数据。

我们先来看一个带参数,但没有返回值的方法:

上面的代码定义了一个 show方法,带有一个参数 name,实现输出欢迎消息。

调用带参方法与调用无参方法的语法类似,但在调用时必须传入实际的参数值

 

例如:

运行结果为: 欢迎您,爱慕课!

很多时候,我们把定义方法时的参数称为形参,目的是用来定义方法需要传入的参数的个数和类型;把调用方法时的参数称为实参,是传递给方法真正被处理的值。

一定不可忽视的问题:

1调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应

2调用方法时,实参不需要指定数据类型,如 

3方法的参数可以是基本数据类型,如intdouble等,也可以是引用数据类型,如 String、数组等

Java 中带参带返回值方法的使用

如果方法既包含参数,又带有返回值,我们称为带参带返回值的方法。

例如:下面的代码,定义了一个 show方法,带有一个参数 name,方法执行后返回一个 String类型的结果

调用带参带返回值的方法:

运行结果为: 欢迎您,爱慕课!

Java 中方法的重载

问:什么是方法的重载呢?

答:如果同一个类中包含了两个或两个以上方法名相同、方法参数的个数、顺序或类型不同的方法,则称为方法的重载,也可称该方法被重载了。如下所示 4个方法名称都为 show,但方法的参数有所不同,因此都属于方法的重载:

问:如何区分调用的是哪个重载方法呢?

答:当调用被重载的方法时, Java会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行。如:

运行结果:

判断方法重载的依据:

1必须是在同一个类中

2方法名相同

3方法参数的个数、顺序或类型不同

4与方法的修饰符或返回值没有关系

0 0
原创粉丝点击