关于airanejava的信息
本篇文章给大家谈谈airanejava,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、寻编写java程序的高手 有两个程序需要编写 若能给出真确答案 还是可以加分
- 2、MacBook Air 如何升级java。?
- 3、救,air调用本地java程序和远程java怎么实现
- 4、苹果笔记本可以做java嘛
寻编写java程序的高手 有两个程序需要编写 若能给出真确答案 还是可以加分
第一个题目是不是少了点什么信息,这么写出类来好像没什么意义啊,连个动作都没执行!我这里是按照题目的要求写的代码,一共是2个文件。
package baidu;
/**
* 文件名:Engine.java
* @author
* @version 1.0,创建时间:2012-4-15 下午06:44:18
* @since jdk1.6
* 引擎类,它有一个引擎类型的属性type,
* 其值可能为喷气引擎(whiff)或螺旋桨引擎(airscrew),
*/
public class Engine
{
//一个飞机引擎的私有属性,因为引擎的可能性只有两种,为了限制可能性,所以此处使用枚举类型
private enum type{whiff,airscrew};
}
package baidu;
/**
* 文件名:Airplane.java
* @author
* @version 1.0,创建时间:2012-4-15 下午06:43:30
* @since jdk1.6
* 飞机类,最基础的类。它有1~4个引擎
*/
public class Airplane
{
//飞机的4个引擎,此处分别命名为engine1~4
private Engine engine1;
private Engine engine2;
private Engine engine3;
private Engine engine4;
/**
* 主函数中来执行操作*/
public static void main(String[] args)
{
//定义初始化两个对象喷气式飞机(jet)和螺旋桨飞机(PDAirplane)
Airplane jetAirplane = new Airplane();
Airplane PDAirplane = new Airplane();
}
}
第二题还好,只是有个问题:java里面的接口明明比抽象类好用,扩展性也更好,为什呢不用接口呢?所以我只能说你出了2个题目都是莫名其妙的。下面是我按照题目写的代码,有3个文件,分别代码图形、长方形、三角形:
package baidu;
/**
* 文件名:Polygon.java
* @version 1.0,创建时间:2012-4-15 下午06:54:50
* @since jdk1.6
* 抽象类,代表一个图形,当做是接口处理吧,子类要实现的接口就是getArea()方法。
*/
public abstract class Polygon
{
//该图形的面积
protected double area;
//这里声明方法,不定义
public abstract void getArea();
/**
* 这里弄几个测试用例来测试一下
* @param args
*/
public static void main(String[] args)
{
Polygon changfangPolygon = new Rectangle(10, 10.5);
changfangPolygon.getArea();
Polygon sanjiaopPolygon = new Triangle(4, 5, 3);
sanjiaopPolygon.getArea();
}
}
package baidu;
/**
* 文件名:Rectangle.java
* @version 1.0,创建时间:2012-4-15 下午06:57:27
* @since jdk1.6
* 矩形类,继承了图形类的方法和接口。
*/
public class Rectangle extends Polygon
{
//长方形的长度和宽度
private double length;
private double width;
/**
* 构造方法,用长度和宽度来初始化这个长方形
* @param len 长方形的长度
* @param width 长方形的宽度
*/
public Rectangle(double len,double width)
{
//为了防止输入的数据有负数什么的,要把他们都转成正数
this.length = Math.abs(len);
this.width = Math.abs(width);
}
/**重写父类的方法,计算出面积,输出结果到控制台*/
@Override
public void getArea()
{
/*这里面是使用了父类的area属性,通过protected继承了下来*/
area = this.length*this.width;
System.out.println("长方形【长度:"+this.length+",宽度:"+this.width+"】,面积:"+area);
}
}
package baidu;
/**
* 文件名:Triangle.java
* @version 1.0,创建时间:2012-4-15 下午07:11:09
* @since jdk1.6
* 三角形类,继承了图形类的方法
*/
public class Triangle extends Polygon
{
/**三角形的三边,分别命名为abc好了,随便*/
private double edgeA;
private double edgeB;
private double edgeC;
/**
* 三角形的构造函数,首先验证输入的数据是否合法才初始化
* @param a
* @param b
* @param c
*/
public Triangle(double a,double b,double c)
{
/*临时变量,存储输入的abc三条边*/
double aa ,bb ,cc;
//是否是三角形的判断
boolean isTriangle;
//先保证三条边都是正数,使用取绝对值的方法
aa = Math.abs(a);
bb = Math.abs(b);
cc = Math.abs(c);
//验证两边之和是否大于第三边
isTriangle = (aa+bbcc)(bb+ccaa)(aa+ccbb);
if(!isTriangle)
{
System.out.println("您输入的三边有错误,两边之和大于第三边!");
this.edgeA = 0;
this.edgeB = 0;
this.edgeC = 0;
return ;
}
this.edgeA = aa;
this.edgeB = bb;
this.edgeC = cc;
}
/* (non-Javadoc)
* @see baidu.Polygon#getArea()
* 重载父类的方法,计算出图形的面积,并且输出到控制台
* 三角形的面积计算公式
* (海伦公式)(p=(a+b+c)/2)
S=√[p(p-a)(p-b)(p-c)]
*/
@Override
public void getArea()
{
double p;
p =(this.edgeA+this.edgeB+this.edgeC)/2;
area = Math.sqrt(p*(p-edgeA)*(p-edgeB)*(p-edgeC));
System.out.println("三角形【长度:"+this.edgeA+","+this.edgeB+","+this.edgeC+"】,面积:"+area);
}
}
MacBook Air 如何升级java。?
在 Java 控制面板中更新 Java
1、单击位于 System Preferences(系统首选项)下的 Java 图标来启动 Java Control Panel(Java 控制面板)。
2、转到 Java 控制面板中的 Updaete(更新)选项卡并单击 Update Now(立即更新)按钮将打开安装程序窗口。
3、单击 Install Update(安装更新)。
4、单击 Install and Relaunch(安装并重新启动)。
请先保存所有工作,然后再单击“Install and Relaunch”(安装并重新启动)。
5、安装完成后,将重新启动 Java 应用程序。
如果 Java 应用程序未自动重新启动,请手动重新启动以使用最新版本的 Java。
如果您选择跳过此版本,但后来决定查看是否有更新,则可以启动 Java 控制面板,只需在“系统首选项”中单击 Java 图标即可。转至更新选项卡启动更新检查。
救,air调用本地java程序和远程java怎么实现
JNI是JavaNativeInterface的缩写,中文为JAVA本地调用。从Java1.1开始,JavaNativeInterface(JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。
使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java虚拟机实现下。
------------------------------------------------------------------
编写带有native声明的方法的java类
·使用javac命令编译所编写的java类
·使用javah?jnijava类名生成扩展名为h的头文件
·使用C/C++实现本地方法
·将C/C++编写的文件生成动态连接库
·ok
1)编写java程序:这里以HelloWorld为例。
代码1:
classHelloWorld{
publicnativevoiddisplayHelloWorld();
static{
System.loadLibrary("hello");
}
publicstaticvoidmain(String[]args){
newHelloWorld().displayHelloWorld();
}
}
声明native方法:如果你想将一个方法做为一个本地方法的话,那么你就必须声明改方法为native的,并且不能实现。其中方法的参数和返回值在后面讲述。Load动态库:System.loadLibrary("hello");加载动态库(我们可以这样理解:我们的方法displayHelloWorld()没有实现,但是我们在下面就直接使用了,所以必须在使用之前对它进行初始化)这里一般是以static块进行加载的。同时需要注意的是System.loadLibrary();的参数“hello”是动态库的名字。
2)编译
没有什么好说的了javacHelloWorld.java
3)生成扩展名为h的头文件javah?
jniHelloWorld头文件的内容:/*DONOTEDITTHISFILE-itismachinegenerated*/
1.include
/*HeaderforclassHelloWorld*/
1.ifndef_Included_HelloWorld
2.define_Included_HelloWorld
3.ifdef__cplusplus
extern"C"{
1.endif
/*
*Class:HelloWorld
*Method:displayHelloWorld
*Signature:()V
*/
JNIEXPORTvoidJNICALLJava_HelloWorld_displayHelloWorld(JNIEnv*,jobject);
1.ifdef__cplusplus
}
1.endif
2.endif
(这里我们可以这样理解:这个h文件相当于我们在java里面的接口,这里声明了一个Java_HelloWorld_displayHelloWorld(JNIEnv*,jobject);方法,然后在我们的本地方法里面实现这个方法,也就是说我们在编写C/C++程序的时候所使用的方法名必须和这里的一致)。
4)编写本地方法实现和由javah命令生成的头文件里面声明的方法名相同的方法。
代码2:
1#include"jni.h"
2#include"HelloWorld.h"
3//#includeotherheaders
4JNIEXPORTvoidJNICALLJava_HelloWorld_displayHelloWorld(JNIEnv*env,jobjectobj)
{
printf("Helloworld!\n");
return;
}
注意代码2中的第1行,需要将jni.h(该文件可以在%JAVA_HOME%/include文件夹下面找到)文件引入,因为在程序中的JNIEnv、jobject等类型都是在该头文件中定义的;另外在第2行需要将HelloWorld.h头文件引入(我是这么理解的:相当于我们在编写java程序的时候,实现一个接口的话需要声明才可以,这里就是将HelloWorld.h头文件里面声明的方法加以实现。当然不一定是这样)。然后保存为HelloWorldImpl.c就ok了。
5)生成动态库
这里以在Windows中为例,需要生成dll文件。在保存HelloWorldImpl.c文件夹下面,使用VC的编译器cl成。cl-I%java_home%\include-I%java_home%\include\win32-LDHelloWorldImp.c-Fehello.dll注意:生成的dll文件名在选项-Fe后面配置,这里是hello,因为在HelloWorld.java文件中我们loadLibary的时候使用的名字是hello。当然这里修改之后那里也需要修改。另外需要将-I%java_home%\include-I%java_home%\include\win32参数加上,因为在第四步里面编写本地方法的时候引入了jni.h文件。
6)运行程序javaHelloWorld就ok.
---------------------------------------------------------------
下面是一个简单的例子实现打印一句话的功能,但是用的c的printf最终实现。一般提供给java的jni接口包括一个so文件(封装了c函数的实现)和一个java文件(需要调用path的类)。
1.JNI的目的是使java方法中能够调用c实现的一些函数,比如以下的java类,就需要调用一个本地函数testjni(一般声明为privatenative类型),首先需要创建文件weiqiong.java,内容如下:
classweiqiong{static{System.loadLibrary("testjni");//载入静态库,test函数在其中实现}privatenativevoidtestjni();//声明本地调用publicvoidtest(){testjni();}publicstaticvoidmain(Stringargs[]){weiqionghaha=newweiqiong();haha.test();}}
2.然后执行javacweiqiong.java,如果没有报错,会生成一个weiqiong.class。
3.然后设置classpath为你当前的工作目录,如直接输入命令行:setclasspath=weiqiong.class所在的完整目录(如c:\test)再执行javahweiqiong,会生成一个文件weiqiong.h文件,其中有一个函数的声明如下:
JNIEXPORTvoidJNICALLJava_weiqiong_testjni(JNIEnv*,jobject);
4.创建文件testjni.c将上面那个函数实现,内容如下:
1.include
2.include
JNIEXPORTvoidJNICALLJava_weiqiong_testjni(JNIEnv*env,jobjectobj){printf("haha---------gointoc!!!\n");}
5.为了生成.so文件,创建makefile文件如下:
libtestjni.so:testjni.omakefilegcc-Wall-rdynamic-shared-olibtestjni.sotestjni.otestjni.o:testjni.cweiqiong.hgcc-Wall-ctestjni.c-I./-I/usr/java/j2sdk1.4.0/include-I/usr/java/j2sdk1.4.0/include/linuxcl:rm-rf*.o*.so注意:gcc前面是tab空,j2sdk的目录根据自己装的j2sdk的具体版本来写,生成的so文件的名字必须是loadLibrary的参数名前加“lib”。
6.exportLD_LIBRARY_PATH=.,由此设置library路径为当前目录,这样java文件才能找到so文件。一般的做法是将so文件copy到本机的LD_LIBRARY_PATH目录下。
7.执行javaweiqiong,打印出结果:“haha---------gointoc!!!”
苹果笔记本可以做java嘛
可以的,需要在苹果系统内安装和配置好java环境,安装并使用基于苹果系统的java的开发工具,就可以了。
关于airanejava和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。