`
阅读更多

星期日, 十一月 15, 2015 15:32:26

 

三、再谈方法

 

----3.1方法的参数与返回值

 

----3.2方法的重载

 

        方法名相同,参数的个数/类型不同

 

----3.3将数组传递到方法里

 

代码案例:

 

1~~ 

package day14;

 

/* 将数组作为参数传递到方法里:

 * 1.传递一维数组*/

public class ArrayTraTest {

public static void main(String[] args){

int ar1[] = {1,3,5,7};

largest(ar1);

}

 

private static void largest(int[] ar1) {

int max = ar1[0];

for(int i= 0;i<ar1.length;i++) {

if(max < ar1[i]){

max = ar1[i];

}

}

System.out.print("max="+max);

 

}

}

 

运行结果:

 

max=7

 

2~~

代码案例:

 package day14;

 

/* 将数组作为参数传递到方法里:

 * 2.传递二维数组*/

public class ArrayTraTest {

public static void main(String[] args){

int ar2[][] ={{2,4,6,8}, {1,3,5,7}};

priE(ar2);

}

 

private static void priE(int[][] ar2) {

for(int i= 0;i<ar2.length;i++) {

for(int j = 0;j<ar2[i].length;j++) {

System.out.print(ar2[i][j]+10+"\t");

}

System.out.print("\n");

}

}

}

 

 

运行结果:

12 14 16 18

11 13 15 17

 

3.~~返回数组的方法

代码案例:

 package day14;

 

/* 返回数组的方法:

 * 在方法前加上返回数组的类型*/

public class ArrayTraTest {

public static void main(String[] args){

int ar2[][] ={{2,4,6,8}, {1,3,5,7}};

int arr21[][] = new int[2][4];

arr21 = priE(ar2);

for(int i =0;i<arr21.length;i++) {

for (int j=0;j<arr21[i].length;j++) {

System.out.print(arr21[i][i]+"\t");

}

System.out.print("\n");

}

}

 

private static int[][] priE(int[][] ar2) {

for(int i= 0;i<ar2.length;i++) {

for(int j = 0;j<ar2[i].length;j++) {

ar2[i][j] +=ar2[i][j]+10;

}

}

return ar2;

}

}

 

运行结果:

12 14 16 18

11 13 15 17

 

 

四:引用数据类型的传递

 

1~~

代码案例

 package day14;

 

/* 引用数据类型的传递*/

public class QuoteTest {

public static void main(String[] args){

Person p1 = new Person();

Person p2 = null;

p1.name = "lala";

p1.age = 18;

p2 = p1;

System.out.print("name= "+p2.name+"  age="+p2.age);

p1 = null;

}

}

 

class Person {

String name;

int age;

}

 

 

运行结果:

name= lala  age=18

 

 

五.引用Object类中的equals方法

 

代码案例:

 package day14;

 

public class ObjectEqualsTest {

public static void main(String[] args){

Person p1 = new Person("haha",22);

Person p2 = new Person("haha",22);

System.out.print((p1.equals(p2)?"是同一个人":"不是同一个人"));

}

}

 

class Person {

String name;

int age;

 

public Person(String name,int age) {

this.name = name;

this.age = age;

}

 

/* 覆盖Object中的equals方法*/

public boolean equals(Object o){

boolean temp = true;

Person p1 = this;

// 判断Object对象是否是Person对象

if(o instanceof Person) {

//如果是Person类实例,则向下转型

Person p2 = (Person)o;

/*调用String类中的equals方法*/

if(!((p1.name).equals(p2.name)&&((p1.age)==(p2.age)))) {

temp = false;

}

}

else {

temp = false;

}

return temp;

 

}

}

运行结果:

是同一个人

 

 

五.接口对象的实例化



      接口是无法直接实例化的,因为接口中没有构造方法。

但是却可以根据对象多态性的概念,通过接口的子类对其进行实例化。

 

从程序中可以看到,使用接口实际上就是定义出了一个统一的标准。

 

5.1

代码案例

package day14;

 

public class InterfaceTest {

public static void main (String[] args) {

Person p = new Person();

p.fun1();

}

}

/*可以根据对象多态性的概念,通过接口的子类对其进行实例化*/

interface A {

public void fun1();

}

 

class Person implements A {

 

@Override

public void fun1() {

System.out.print("A fun1()");

}

 

}

 

 

运行结果:

A fun1()

 

 

5.2接口定义统一的标准 

 

代码案例2

 

package day14;

 

public class InterfaceTest2 {

public static void main (String[] args) {

(new Computer()).work(new MoveDisk());

new Computer().work(new MP3());

}

}

/*可以根据对象多态性的概念,通过接口的子类对其进行实例化

 * 使用接口实际上就是定义出了一个统一的标准*/

interface USB {

public void start();

public void stop();

}

/*不同的设备实现覆写接口的方法*/

class MoveDisk implements USB {

 

@Override

public void start() {

System.out.print("MoveDisk start()"+"\t");

 

}

 

@Override

public void stop() {

System.out.println("MoveDisk stop()");

 

}

 

}

 

class MP3 implements USB {

 

@Override

public void start() {

System.out.print("MP3 start()"+"\t");

 

}

 

@Override

public void stop() {

System.out.print("MP3 stop()");

 

}

 

}

 

class Computer  {

public void work (USB u) {

u.start();

u.stop();

}

}

 

运行结果:

MoveDisk start() MoveDisk stop()

MP3 start() MP3 stop()

 

 

六、this关键字

 

----6.1 当前的对象

 

       构造方法是在实例化一个对象时被自动调用的=在类中所有方法里,只有构造方法是被优先调用的,

所以使用this调用构造方法必须也只能放在类中。

 

----6.2 如果程序中想用某一个构造方法调用另一个构造方法,也可以用this来实现。

 

代码案例:

package day14;

 

public class ThisTest {

public static void main(String[] args) {

Person p = new Person("yuzhou",23);

}

}

/*某一个构造方法调用另一个构造方法*/

class Person {

String name;

int age;

public Person() {

System.out.println("无参Person()");

}

 

public Person(String name,int age) {

   this(); //调用无参构造方法

   this.name = name;

   this.age = age;

System.out.print("参person (String name,int age)"+"\t"+name+"\t"+age);

}

}

运行结果:

无参Person()

参person (String name,int age) yuzhou 23

 

六、static关键字

 

----6.1声明静态变量

 

说明用static声明的属性是所有对象共享的。

也可以用类名直接访问。

例如Person.city = “。。。”;

也称为:类变量

 

----6.2静态方法

 

注意:

如果在类中声明一个static类型的属性,

1.则此属性既可以在非static类型的方法中使用,也可以在static类型的方法中使用。

2.但若要用static类型的方法调用非static类型的属性,就会出现错误。

 

----6.3理解main()方法

 

1.访问权限为public----java虚拟机需要调用类中的main()方法 公共方法

2.方法必须是static的----java虚拟机在执行main()时不必创建对象   静态方法,可以由类名直接调用

 

 

----6.4静态代码块

 

6.4.1基础概念

 

        一个类可以使用不包含在任何方法中的静态代码块,当类被载入时,静态代码块被执行,且执行一次。

静态代码块经常用来进行类属性的初始化。

 

 

     产生了两个匿名对象,而静态代码块只执行了一次,而且静态代码块优先于静态方法,

--->静态代码块可以对静态属性初始化。

 

6.4.2代码案例:

package day14;

 

public class StaticTest {

/*运行本程序,此段代码会自动被执行*/

static {

System.out.println("3.StaticTest...static");

}

public static void main(String[] args) {

System.out.println("4.public static void main(String[] args)");

/*产生了两个匿名对象,而静态代码块只执行了一次,而且静态代码块优先于静态方法,

--->静态代码块可以对静态属性初始化。*/

new Person();

new Person();

}

}

 

class Person {

public  Person() {

System.out.println("1.public void Person()");

}

/*此段代码首先被执行*/

static {

System.out.println("2.Person...static");

}

}

运行结果:

3.StaticTest...static

4.public static void main(String[] args)

2.Person...static

1.public void Person()

1.public void Person()

 

七.final关键字的使用

 

在Java中声明类、属性和方法时,可以使用final来修饰。

  1.final标记的类不能被继承

  2.final标记的方法不能被子类覆写

  3.final标记的变量(成员变量或局部变量)即为常量,只能赋值一次。

 

八、interface关键字的使用

 

----8.1基本概念

 

interface判断一个类是否实现了某个接口,

判断一个实例对象是否属于一个类。

 

----8.2格式:

  对象 interface类(或接口)

 

 

星期日, 十一月 15, 2015  18:42:39

0
1
分享到:
评论

相关推荐

    eq_data_30_day_m1.rar

    标题中的"eq_data_30_day_m1.rar"是一个压缩文件,通常用于存储多个相关文件或数据集。根据描述,这个文件与《Python:从入门到实践》这本书的第16章有关,这意味着它可能包含了一个与Python编程、数据分析或者可视化...

    RP_LAST_DAY_OF_MONTHS.doc

    标题中的"RP_LAST_DAY_OF_MONTHS.doc"似乎是一个文档文件名,通常用于记录或说明某个特定的函数、过程或在IT环境中使用的脚本。在这个情况下,"RP_LAST_DAY_OF_MONTHS"很可能是一个函数或者宏,它的主要功能是计算或...

    eq_data_30_day_m1.json

    30天全球地震数据集

    read_amsr_day_v7_gif_matlab_png_

    标题“read_amsr_day_v7_gif_matlab_png_”暗示了这是一个关于使用MATLAB处理AMS(R)(Advanced Microwave Scanning Radiometer)卫星数据,特别是每天的数据,并将其转化为GIF或PNG图像的过程。AMSR是地球观测卫星上...

    unity3d 白天夜晚切换插件 Day_Night_Cycle.unitypackage

    这种灵活性使得该插件适用于各种类型的游戏,从开放世界冒险到模拟类游戏,都可以实现更真实的环境体验。 使用这个插件,开发者可以轻松控制游戏的时间流程,而无需深入了解光照计算和图形渲染的复杂细节。它通常会...

    15_day_mini

    15_day_mini

    day_45_bookstore.zip_day_45_bookstore_图书管理

    在这个“day_45_bookstore”项目中,模型可能包含Book类,用于存储书籍的基本信息如书名、作者、出版社等;视图则负责将这些信息以用户友好的方式呈现,例如表格或者列表形式;控制器处理用户的请求,如添加新书、...

    first_day_of_school

    first_day_of_school

    Day_five.rar_day_five_学习计划_日程安排系统_日程管理

    标题中的“Day_five.rar_day_five_学习计划_日程安排系统_日程管理”提示我们这是一个关于日程管理的学习资源,可能是一个项目或教程的第五天内容,涉及到创建或使用日程安排系统的知识。描述进一步确认了这个系统是...

    tas_day_CESM2-WACCM_ssp126_r1i1p1f1_gn_20350101-20441231.nc

    CMIP6温度数据

    day_wise_datashrink.csv

    day_wise_datashrink.csv

    MySQL_Exploit.rar_0day_C 0day_Exploit_mysql c

    "MySQL_Exploit.rar_0day_C 0day_Exploit_mysql c"这个标题暗示了存在一个针对MySQL的0day攻击方法,可能是通过C语言编写的代码实现。 描述中提到"MySQL_Exploit 0day 放好久了 今天传上来",意味着这个漏洞可能...

    time_of_day_156m.rar_time of day_时间戳守时程序

    标题中的“time_of_day_156m.rar_time of day_时间戳守时程序”表明这是一个与时间戳和守时程序相关的项目。这个程序可能是为了在特定环境(比如156MHz的工作频率)下准确获取当前时间而设计的。156MHz通常与高速...

    15_day_mini2

    【标题】"15_day_mini2" 指的可能是一个为期15天的迷你项目或学习计划,可能涉及到IT领域的某个特定主题。这个标题暗示我们可能会接触到一系列紧凑且有针对性的学习资源或者项目进展记录。 【描述】同样简洁地命名...

    memorial_day_salute

    memorial_day_salute

    PyPI 官网下载 | tracardi_day_night_split-0.1.2-py3-none-any.whl

    《PyPI官网下载:tracardi_day_night_split-0.1.2-py3-none-any.whl详解》 PyPI(Python Package Index)是Python社区的重要资源库,它为全球Python开发者提供了一个集中下载和分享Python软件包的平台。在PyPI上,...

    asp.net最新0day_exp

    "0day_exp"通常指的是未公开的、未知的安全漏洞,也就是在软件厂商发布补丁之前被黑客发现并利用的漏洞。在本例中,"asp.net最新0day_exp"可能是指ASP.NET框架中的一个最新被发现的安全漏洞。 **ASP.NET基础知识** ...

    day_07_NB_SpamMessage.zip

    day_07_NB_SpamMessage.zip

    first_day_of_school017

    first_day_of_school017

    品优购_day01_课程讲义_V1.2.pdf

    品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程讲义_V1.2.pdf品优购_day01_课程...

Global site tag (gtag.js) - Google Analytics