首页编程java编程0.5在java是什么类型?Java在父类中如何创建子类对象

0.5在java是什么类型?Java在父类中如何创建子类对象

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

大家好,感谢邀请,今天来为大家分享一下0.5在java是什么类型的问题,以及和Java在父类中如何创建子类对象的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!

0.5在java是什么类型?Java在父类中如何创建子类对象

matlab与java混合编程有什么作用

Java和matlab混合编程

如果用Matlab和java混合编程开发Windows的应用程序则可以实现优势互补,缩短开发时间,降低程序设计的复杂度。同时程序可以脱离Matlab环境独立运行,在工程计算和教学实践中都具有实际意义。

0.5在java是什么类型?Java在父类中如何创建子类对象

1.使用java调用Maltab函数的基本方法是:通过Java Builder实现Java调用Matlab。在Java环境中直接调用Matlab所生成的Jar包。

下面以在Java中产生任意维数的魔方矩阵,计算任意矩阵的特征向量和特征值,对两组数据进

行拟合并绘制拟合曲线三个实例来说明通过Java

0.5在java是什么类型?Java在父类中如何创建子类对象

Builder实现Java调用Matlab的过程。传统的纯Java编程实现上述实例非常复杂,甚至很难完成。这一问题在Matlab中只需要调用几个

函数即可完成。

1.1、将Matlab函数包装成Java类

首先在Matlab中编写三个M文件:

Eig.m

function [v,d]=Eig(input)

format long

[v,d]=eig(input);

End

Magic.m

function f=Magic( input)

f=magic(input);

end

Plot.m

function Plot(x,y)

p=polyfit(x,y,3);

t=min(x):max(x)/100:max(x);

s=polyval(p,t);

plot(x,y,'*',t,s);

title('数据拟合结果');

xlabel('x');

ylabel('y');

end

其次,在Matlab中新建一个Deployment

Project,名称为MyProject.prj,类型为Java

package。在Project中新建三个Class,分别为GetEig,GetMagic,PolyFit。将

Eig.m,Magic.m,plot.m分别添加到上述Class中。之后点击Builder the project,等待编译成功即可。

1.2、在Java中调用Matlab函数

新建一个Java类JavaMatlab,并引入相关的包。

import com.mathworks.toolbox.javabuilder.*;//引入Matlab相关包

import MyProject.*;//引入建立的包及类

调用时Java与Matlab之间的参数传递需要通过MWNumericArray完成。具体的调用代码如下:

package org.genius.ExpandJava;

import MyProject.*;

import com.mathworks.toolbox.javabuilder.*;

public class JavaMatlab{

public static void main(String[] args){

MWNumericArray a= null;//用于保存矩阵

MWNumericArray ax= null;//用于保存矩阵

MWNumericArray ay= null;//用于保存矩阵

Object[] result= null;//用于保存计算结果

GetEig getEig= null;

GetMagic getMagic=null;

PolyFit polyFit=null;

int r= 4;//魔方矩阵维数

int array[][]={{50,-20,0},{-20,80,60},{0,60,-70}};

double x[]={0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1};

double y[]={-0.447,1.978,3.28,6.16,7.08,7.34,7.66,9.56,9.48,9.3,11.2};

try{

//产生魔方矩阵并打印

a= new MWNumericArray(r, MWClassID.DOUBLE);

getMagic= new GetMagic();

result= getMagic.Magic(1,a);

System.out.println("产生的四维魔方矩阵:");

System.out.println(result[0]);

MWArray.disposeArray(result);

//计算所给矩阵的特征向量和特征值并打印结果

a= new MWNumericArray(array, MWClassID.DOUBLE);

getEig= new GetEig();

result= getEig.Eig(2, a);

System.out.println("原始矩阵:");

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

System.out.println("得到的特征向量:");

System.out.println(result[0]);

System.out.println("得到的特征值:");

System.out.println(result[1]);

MWArray.disposeArray(result);

ax= new MWNumericArray(x, MWClassID.DOUBLE);

ay= new MWNumericArray(y, MWClassID.DOUBLE);

polyFit= new PolyFit();

result=polyFit.Plot(ax,ay);

polyFit.waitForFigures();

} catch(Exception e){

System.out.println("Exception:"+ e.toString());

}

finally{

//释放本地资源

MWArray.disposeArray(a);

MWArray.disposeArray(ax);

MWArray.disposeArray(ay);

MWArray.disposeArray(result);

getEig.dispose();

getMagic.dispose();

polyFit.dispose();

}

}

}

Java在父类中如何创建子类对象

你好,很高兴回答你的问题。

可以进行如下修改,将breed的实现移到抽象父类Animal中,略做修改,修改后代码如下

public Animal breed(){

Animal ret=null;

if(isBreedable()&&Math.random()<getValue()){

ret=getAnimal();

}

return ret;

}

父类Animal中增加如下两个抽象方法:

public abstract double getValue();

public abstract Animal getAnimal();

在Fox中不再需要实现breed,实现新定义的两个方法:

public abstract double getValue(){

return 0.5;

}

public abstract Animal getAnimal(){

return new Fox();

}

在Rabbit类中类似处理:

public abstract double getValue(){

return 0.12;

}

public abstract Animal getAnimal(){

return new Rabbit();

}

如果有帮助到你,请点击采纳。

我解答的大部分是软件开发新人遇到的问题,如果有兴趣可以关注我。

的java例题是考试题目吗

1、面向对象的特征有哪些方面?

答:面向对象的特征主要有以下几个方面:

1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

2)继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。

3)封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。

4)多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1.方法重写(子类继承父类并重写父类中已有的或抽象的方法);2.对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。

2、访问修饰符public,private,protected,以及不写(默认)时的区别?

答:区别如下:

作用域当前类同包子类其他

public√√√√

protected√√√×

default√√××

private√×××

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。

3、String是最基本的数据类型吗?

答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。

4、float f=3.4;是否正确?

答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f=(float)3.4;或者写成float f=3.4F;。

5、short s1= 1; s1= s1+ 1;有错吗?short s1= 1; s1+= 1;有错吗?

答:对于short s1= 1; s1= s1+ 1;由于1是int类型,因此s1+1运算结果也是int型,需要强制转换类型才能赋值给short型。而short s1= 1; s1+= 1;可以正确编译,因为s1+= 1;相当于s1=(short)(s1+ 1);其中有隐含的强制类型转换。

6、Java有没有goto?

答:goto是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)

7、int和Integer有什么区别?

答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从JDK 1.5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

Java为每个原始类型提供了包装类型:

原始类型: boolean,char,byte,short,int,long,float,double

包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

?

123456789101112

package com.lovo;//何问起 hovertree.compublic class AutoUnboxingTest{ public static void main(String[] args){ Integer a= new Integer(3); Integer b= 3;//将3自动装箱成Integer类型 int c= 3; System.out.println(a== b);// false两个引用没有引用同一对象 System.out.println(a== c);// true a自动拆箱成int类型再和c比较}}

补充:最近还遇到一个面试题,也是和自动装箱和拆箱相关的,代码如下所示:

?

12345678910

public class Test03{ public static void main(String[] args){ Integer f1= 100, f2= 100, f3= 150, f4= 150; System.out.println(f1== f2); System.out.println(f3== f4);}}// hovertree.com

如果不明就里很容易认为两个输出要么都是true要么都是false。首先需要注意的是f1、f2、f3、f4四个变量都是Integer对象,所以下面的==运算比较的不是值而是引用。装箱的本质是什么呢?当我们给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,如果看看valueOf的源代码就知道发生了什么。

?

123456

public static Integer valueOf(int i){ if(i>= IntegerCache.low&& i<= IntegerCache.high) return IntegerCache.cache[i+(-IntegerCache.low)]; return new Integer(i);}// hovertree.com

IntegerCache是Integer的内部类,其代码如下所示:

?

12345678910111213141516171819202122232425262728293031323334353637383940414243444546

/*** Cache to support the object identity semantics of autoboxing for values between*-128 and 127(inclusive) as required by JLS.** The cache is initialized on first usage. The size of the cache* may be controlled by the{@code-XX:AutoBoxCacheMax=<size>} option.* During VM initialization, java.lang.Integer.IntegerCache.high property* may be set and saved in the private system properties in the* sun.misc.VM class.* hovertree.com*/ private static class IntegerCache{ static final int low=-128; static final int high; static final Integer cache[]; static{// high value may be configured by property int h= 127; String integerCacheHighPropValue= sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high"); if(integerCacheHighPropValue!= null){ try{ int i= parseInt(integerCacheHighPropValue); i= Math.max(i, 127);// Maximum array size is Integer.MAX_VALUE h= Math.min(i, Integer.MAX_VALUE-(-low)-1);} catch( NumberFormatException nfe){// If the property cannot be parsed into an int, ignore it.}} high= h; cache= new Integer[(high- low)+ 1]; int j= low; for(int k= 0; k< cache.length; k++) cache[k]= new Integer(j++);// range [-128, 127] must be interned(JLS7 5.1.7) assert IntegerCache.high>= 127;} private IntegerCache(){}}

简单的说,如果字面量的值在-128到127之间,那么不会new新的Integer对象,而是直接引用常量池中的Integer对象,所以上面的面试题中f1==f2的结果是true,而f3==f4的结果是false。越是貌似简单的面试题其中的玄机就越多,需要面试者有相当深厚的功力。

8、&和&&的区别?

答:&运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username!= null&&!username.equals(“”),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

补充:如果你熟悉JavaScript,那你可能更能感受到短路运算的强大,想成为JavaScript的高手就先从玩转短路运算开始吧。

9、解释内存中的栈(stack)、堆(heap)和静态存储区的用法。

答:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100、“hello”和常量都是放在静态存储区中。栈空间操作最快但是也很小,通常大量的对象都是放在堆空间,整个内存包括硬盘上的虚拟内存都可以被当成堆空间来使用。

String str= new String(“hello”);

上面的语句中str放在栈上,用new创建出来的字符串对象放在堆上,而“hello”这个字面量放在静态存储区。

补充:较新版本的Java中使用了一项叫“逃逸分析“的技术,可以将一些局部对象放在栈上以提升对象的操作性能。

10、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。

好了,文章到这里就结束啦,如果本次分享的0.5在java是什么类型和Java在父类中如何创建子类对象问题对您有所帮助,还望关注下本站哦!

java为什么 会编译时异常(java编译异常有哪几个)java中对象的引用是什么意思 JAVA:”对象的引用“是什么意思