首页编程java编程java中都有什么方法?java中都有哪些类型的方法,如何调用它们

java中都有什么方法?java中都有哪些类型的方法,如何调用它们

编程之家2023-10-1291次浏览

今天给各位分享java中都有什么方法的知识,其中也会对java中都有哪些类型的方法,如何调用它们进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

java中都有什么方法?java中都有哪些类型的方法,如何调用它们

java编程中的"方法"是什么意思

在一个类中,程序的作用体现在方法中。方法是JAVA创建一个有名字的子程序的方法。

1、方法的实现包括两部分内容:方法声明和方法体。

[public| protected| private ] [static]

java中都有什么方法?java中都有哪些类型的方法,如何调用它们

[final| abstract] [native] [synchronized]

returnType methodName([paramList])

[throws exceptionList]//方法声明

java中都有什么方法?java中都有哪些类型的方法,如何调用它们

{statements}//方法体

——方法体是对方法的实现,它包括局部变量的声明以及所有合法的Java指令。方法体中声明的局部变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。

——方法声明中的限定词的含义:

static:类方法,可通过类名直接调用

abstract:抽象方法,没有方法体

final:指最后一个方法

方法声明包括方法名、返回类型和外部参数。其中参数的类型可以是简单数据类型,也可以是复合数据类型(又称引用数据类型)。

对于简单数据类型来说,java实现的是值传递,方法接收参数的值,但不能改变这些参数的值。如果要改变参数的值,则用引用数据类型,因为引用数据类型传递给方法的是数据在内存中的地址,方法中对数据的操作可以改变数据的值。

补充:Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。

java中都有哪些类型的方法,如何调用它们

这个从关键字来理解啊,

1.如果方法定义前面加final,说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用。

2.如果方法定义前面加static,表示静态方法,方法和类关联,直接由类名来调用。

3.如果方法定义前面加abstract,表示抽象方法,由继承类来实现。

4.对于方法前面的public, private,protected等这些是控制方法可以被调用的范围。

5.如果方法定义前面有native,Native方法是由另外一种语言(如c/c++,FORTRAN,汇编)实现的本地方法。因为在外部实现了方法,所以在java代码中,就不需要声明了,有点类似于借口方法,一般用不着。

6.如果方法定义前面加synchronized,表示当前方法体是一个临界区,通过锁机制来控制多个线程同步,在多线程应用里面经常使用。

java类方法

emm...问题...不少。

1、这个构造函数问题就很大:

你传递一个r数组进来,然后你又让this.v1=v1,this.v2=v2,那么这个r的意义到底是什么?你构造出来的这个向量的v1和v2也还是根本没有任何值。

2、这。。这块问题太多了,我都不知道该怎么说,就全都不应该这么玩,下面加法也是一样的我就不圈出来了。

首先,非常不建议用null来声明任何变量,你声明r[]数组为null,下面又在循环里使用r[i],r都不是一个东西(因为它是null,还真不是个东西手动滑稽),r[i]必然导致万恶的空指针异常NullPointerException。然后前面第一点说了,你的v1和v2根本就没有值,其实他们也是null,所以v1.length也将产生空指针异常,你的for循环根本没法进行。好,就算假设你的v1和v2都声明为new double[0]了,他们不再是null了,那么你的这个方法最终有可能返回null,又来了又来了,不要随便使用null,一不小心可能导致你main方法中调用这个方法后再次造成空指针异常。所以你非要这样写的话也建议写成return new double[0];这样即使它是一个空的数组但最起码它已经是个对象了,不再是null了。

3、main方法中null又双叒来了:

null数组不能放任何东西进去,不然将导致空指针异常。

所以现在怎么办?我估计你也发现了,因为你不知道这个数组究竟有多少个数字所以无法准确地定义这个r的长度。

本来我认为最优的做法是利用java的几种数据结构来保存输入项就好了,但是我怕你还没学到,其中这几个数据结构都不需要指定长度就能保存数据,他们能保存的最大数据量为int的最大值:java.util.List(java的集合,特别好用)、java.util.Vector(没错,java本来就有向量这种数据结构,比你这个MyVector功能要多一些)、java.util.Stack(栈其实是继承了向量,是一种特殊的向量)、java.util.Queue(java的队列),常用的就这些。

另外一种方法就是指定r[]数组有一个较大的length,也就是一开始就声明的足够大,比如直接double[] r= new double[999]但是这种是非常不好的办法,一个是如果你最终只存储两三个数字,那么数组空间就浪费太多了,另外是如果超过了999个数字,又会导致数组溢出。

所有我下面采用了第三种直截了当的方法帮你改进为,一开始你要输入向量的长度,你要说明向量到底有多长,这样不就能准确地定义r[]数组了吗?look:

这样就稳得一批了。

4、再看你main方法的最后:

你这种设计方法根本没有体现出两个向量之间的运算关系啊,根本就是只有一个向量在这里。因此,你的运算函数应该修改为传入一个新的向量,也就是这样:

这样的话,main函数里就可以这样了:

看到没,是不是一眼就能看出是向量1和向量2相加、点积?

5、审题!审题!你的toString()方法呐?结果保留两位小数呐?see:

另外题目里还说要定义一个int n的成员变量表示维度。我没太明白这个维度是啥?这不就是一维向量吗?维度不就是1吗?

综上所述,代码被我整体修改为:

public class MyVector{

private double[] array;

private int n= 1;

public MyVector(double[] array){

this.array= array;

}

public double[] getArray(){

return this.array;

}

public double[] MyVectorDott(MyVector myVector2){

double[] array2= myVector2.getArray();

double[] result= new double[this.array.length];

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

result[i]= this.array[i]* array2[i];

}

return result;

}

public double[] MyVectorAdd(MyVector myVector2){

double[] array2= myVector2.getArray();

double[] result= new double[this.array.length];

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

result[i]= this.array[i]+ array2[i];

}

return result;

}

public String toString(){

String s="(";

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

if(i< this.array.length- 1){

s+= String.format("%.2f", this.array[i])+",";

} else{

s+= String.format("%.2f", this.array[i]);

}

}

return s+")";

}

public static void main(String[] args){

System.out.print("请输入向量长度:");

Scanner input= new Scanner(System.in);

int length= input.nextInt();

double[] array1= new double[length];

double[] array2= new double[length];

System.out.print("请输入第一组向量值:");

input= new Scanner(System.in);

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

array1[i]= input.nextDouble();

}

System.out.print("请输入第二组向量值:");

input= new Scanner(System.in);

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

array2[i]= input.nextDouble();

}

input.close();

MyVector myVector1= new MyVector(array1);

System.out.println("向量1为:");

System.out.println(myVector1.toString());

System.out.println("向量2为:");

MyVector myVector2= new MyVector(array2);

System.out.println(myVector2.toString());

MyVector myVector3= new MyVector(myVector1.MyVectorAdd(myVector2));

System.out.println("向量1与向量2求和为:");

System.out.println(myVector3.toString());

System.out.println("向量1与向量2点积为:");

MyVector myVector4= new MyVector(myVector1.MyVectorDott(myVector2));

System.out.println(myVector4.toString());

}

}

运行结果:

代码老是会挤在一起,你自己整理一下

关于本次java中都有什么方法和java中都有哪些类型的方法,如何调用它们的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

java找工作用什么软件?程序员找工作用什么比较好临朐一中(临朐一中在山东排名)