Java程序设计语言是什么意思

Java程序设计语言是什么意思,第1张

Java是由SunMicrosystems公司于1995年推出的一门面向对象程序设计语言。2010年Oracle公司收购SunMicrosystems,之后由Oracle公司负责Java的维护和版本升级。

其实,Java还是一个平台。Java平台由Java虚拟机(JavaVirtualMachine,JVM)和Java应用编程接口(ApplicationProgrammingInterface,API)构成。

Java应用编程接口为此提供了一个独立于 *** 作系统的标准接口,可分为基本部分和扩展部分。在硬件或 *** 作系统平台上安装一个Java平台之后,Java应用程序就可运行。

Java平台已经嵌入了几乎所有的 *** 作系统。这样Java程序只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版本发展到1.2版本。常用的Java平台基于Java1.6,最新版本为Java1.8。

Java发展至今,就力图使之无所不能。按应用范围,Java可分为3个体系,即JavaSE、JavaEE和JavaME。

扩展资料

Java语言的特点

Java语言的风格很像C语言和C++语言,是一种纯粹的面向对象语言,它继承了C++语言面向对象的技术核心,但是抛弃了C++的一些缺点,比如说容易引起错误的指针以及多继承等,同时也增加了垃圾回收机制,释放掉不被使用的内存空间,解决了管理内存空间的烦恼。

1、面向对象

Java是一种面向对象的语言,它对对象中的类、对象、继承、封装、多态、接口、包等均有很好的支持。为了简单起见,Java只支持类之间的单继承,但是可以使用接口来实现多继承。使用Java语言开发程序,需要采用面向对象的思想设计程序和编写代码。

2、平台无关性

平台无关性的具体表现在于,Java是“一次编写,到处运行(WriteOnce,RunanyWhere)”的语言,因此采用Java语言编写的程序具有很好的可移植性,而保证这一点的正是Java的虚拟机机制。在引入虚拟机之后,Java语言在不同的平台上运行不需要重新编译。

Java语言使用Java虚拟机机制屏蔽了具体平台的相关信息,使得Java语言编译的程序只需生成虚拟机上的目标代码,就可以在多种平台上不加修改地运行。

3、简单性

Java语言的语法与C语言和C++语言很相近,使得很多程序员学起来很容易。对Java来说,它舍弃了很多C++中难以理解的特性,如 *** 作符的重载和多继承等,而且Java语言不使用指针,加入了垃圾回收机制,解决了程序员需要管理内存的问题,使编程变得更加简单。

4、解释执行

Java程序在Java平台运行时会被编译成字节码文件,然后可以在有Java环境的 *** 作系统上运行。在运行文件时,Java的解释器对这些字节码进行解释执行,执行过程中需要加入的类在连接阶段被载入到运行环境中。

5、多线程

Java语言是多线程的,这也是Java语言的一大特性,它必须由Thread类和它的子类来创建。Java支持多个线程同时执行,并提供多线程之间的同步机制。任何一个线程都有自己的run()方法,要执行的方法就写在run()方法体内。

Java不仅可以用来开发大型的桌面应用程序,而且还特别适合于Internet的应用开发。目前,很多新的技术领域都涉及Java。Java是面向对象程序设计语言,涉及网络、多线程等重要的基础知识,因此Java也是学习面向对象编程和网络编程的首选语言。

本书讲解Java程序设计知识及其编程方法,包括Java语言的基础语法、结构化程序设计、面向对象程序设计、数组、字符串、向量、哈希表、枚举、异常处理、文件和数据流、图形用户界面设计、Applet程序、线程、编程规范、网络程序设计、多媒体和图形学程序设计等。

本书的章节编排与内容以人们学习与认知的过程为基础,注重内容的可读性和可用性,与实际需求相匹配。内容力求简明,许多例题都经过精心设计,既能帮助理解知识,又具有启发性;每章都包含了图、表、例程以及类和接口的说明,使读者在轻松和愉快之中迅速理解与掌握Java程序设计的知识和方法,并应用到实践中去。本书既可以作为高等院校各专业的基础教材,也可以作为使用Java的工程技术人员和科技工作者的自学参考书。

/Testjava/

public class Test {

public static void main(String[] args)

{

Systemoutprintln("问题1:");

Quest01func1();

Systemoutprintln("问题2:");

Quest02func1();

Systemoutprintln("问题3:");

Quest03func1();

Systemoutprintln("问题4:");

Quest04func1();

}

}

/Quest01java/

public class Quest01 {

public static void func1()

{

int sum=0;

for(int i=1;i<=100;i++)

{

sum+=i;

}

Systemoutprintln(sum);

}

}

/Quest02java/

public class Quest02 {

static void func1()

{

String str="";

for(int i=1;i<=9;i++)

{

for(int j=1;j<=9;j++)

{

if(j<=i)

{

str+=i+""+j+"="+ij+"\t";

}

if(j==i)

{

str+="\n";

break;

}

}

}

Systemoutprintln(str);

}

}

/Quest03java/

import javautilScanner;

public class Quest03 {

public static void func1()

{

float[] score=new float[5];

float max=0,min=0,avg=0;

Scanner s=new Scanner(Systemin);

for(int i=0;i<scorelength;i++)

{

Systemoutprintln("please input score "+i+":");

score[i]=snextFloat();

}

max=score[0];

min=score[0];

avg=0;

for(int i=0;i<scorelength;i++)

{

if(score[i]>max)

max=score[i];

if(score[i]<min)

min=score[i];

avg+=score[i];

}

avg=avg/scorelength;

Systemoutprintln("max="+max+"\t"+"min="+min+"\t"+"avg="+avg);

}

}

/Quest04java/

public class Quest04 {

static void func1()

{

Person p1=new Person();

Student s1=new Student();

Teacher t1=new Teacher();

p1eat();

s1getName();

t1getAge();

s1playGame();

}

}

class Person

{

String name;

int age;

void eat()

{

Systemoutprintln("eat()");

}

String getName()

{

Systemoutprintln("getName():"+name);

return name;

}

int getAge()

{

Systemoutprintln("getAge():"+age);

return age;

}

}

class Student extends Person implements PlayGame

{

Student()

{

thisname="学生";

thisage=10;

}

public void playGame() {

// TODO Auto-generated method stub

Systemoutprintln("playGame()");

}

}

class Teacher extends Person

{

Teacher()

{

thisname="老师";

thisage=40;

}

}

interface PlayGame

{

void playGame();

}

在Java语言产生前 传统的程序设计语言的程序同一时刻只能单任务 *** 作 效率非常低 例如程序往往在接收数据输入时发生阻塞 只有等到程序获得数据后才能继续运行 随着Internet的迅猛发展 这种状况越来越不能让人们忍受 如果网络接收数据阻塞 后台程序就处于等待状态而不继续任何 *** 作 而这种阻塞是经常会碰到的 此时CPU资源被白白的闲置起来 如果在后台程序中能够同时处理多个任务 该多好啊!应Internet技术而生的Java语言解决了这个问题 多线程程序是Java语言的一个很重要的特点 在一个Java程序中 我们可以同时并行运行多个相对独立的线程 例如 我们如果创建一个线程来进行数据输入输出 而创建另一个线程在后台进行其它的数据处理 如果输入输出线程在接收数据时阻塞 而处理数据的线程仍然在运行 多线程程序设计大大提高了程序执行效率和处理能力

线程的创建

我们知道Java是面向对象的程序语言 用Java进行程序设计就是设计和使用类 Java为我们提供了线程类Thread来创建线程 创建线程与创建普通的类的对象的 *** 作是一样的 而线程就是Thread类或其子类的实例对象 下面是一个创建启动一个线程的语句

Thread thread =new Thread(); file://声明一个对象实例 即创建一个线程

Thread run(); file://用Thread类中的run()方法启动线程

从这个例子 我们可以通过Thread()构造方法创建一个线程 并启动该线程 事实上 启动线程 也就是启动线程的run()方法 而Thread类中的run()方法没有任何 *** 作语句 所以这个线程没有任何 *** 作 要使线程实现预定功能 必须定义自己的run()方法 Java中通常有两种方式定义run()方法

通过定义一个Thread类的子类 在该子类中重写run()方法 Thread子类的实例对象就是一个线程 显然 该线程有我们自己设计的线程体run()方法 启动线程就启动了子类中重写的run()方法

通过Runnable接口 在该接口中定义run()方法的接口 所谓接口跟类非常类似 主要用来实现特殊功能 如复杂关系的多重继承功能 在此 我们定义一个实现Runnable() 接口的类 在该类中定义自己的run()方法 然后以该类的实例对象为参数调用Thread类的构造方法来创建一个线程

线程被实际创建后处于待命状态 激活(启动)线程就是启动线程的run()方法 这是通过调用线程的start()方法来实现的

下面一个例子实践了如何通过上述两种方法创建线程并启动它们

// 通过Thread类的子类创建的线程 class thread extends Thread { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://通过Runnable接口创建的另外一个线程 class thread implements Runnable { file://自定义线程的run()方法 public void run() { System out println( Thread is running… ); } } file://程序的主类 class Multi_Thread file://声明主类 { plubic static void mail(String args[]) file://声明主方法 { thread threadone=new thread (); file://用Thread类的子类创建线程 Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程 threadone start(); threado start(); file://strat()方法启动线程 } }

运行该程序就可以看出 线程threadone和threado交替占用CPU 处于并行运行状态 可以看出 启动线程的run()方法是通过调用线程的start()方法来实现的(见上例中主类) 调用start()方法启动线程的run()方法不同于一般的调用方法 调用一般方法时 必须等到一般方法执行完毕才能够返回start()方法 而启动线程的run()方法后 start()告诉系统该线程准备就绪可以启动run()方法后 就返回start()方法执行调用start()方法语句下面的语句 这时run()方法可能还在运行 这样 线程的启动和运行并行进行 实现了多任务 *** 作

线程的优先级

对于多线程程序 每个线程的重要程度是不尽相同 如多个线程在等待获得CPU时间时 往往我们需要优先级高的线程优先抢占到CPU时间得以执行 又如多个线程交替执行时 优先级决定了级别高的线程得到CPU的次数多一些且时间多长一些 这样 高优先级的线程处理的任务效率就高一些

Java中线程的优先级从低到高以整数 ~ 表示 共分为 级 设置优先级是通过调用线程对象的setPriority()方法 如上例中 设置优先级的语句为

thread threadone=new thread (); file://用Thread类的子类创建线程

Thread threado=new Thread(new thread ()); file://用Runnable接口类的对象创建线程

threadone setPriority( ); file://设置threadone的优先级

threado setPriority( ); file://设置threado的优先级

threadone start(); threado start(); file://strat()方法启动线程

这样 线程threadone将会优先于线程threado执行 并将占有更多的CPU时间 该例中 优先级设置放在线程启动前 也可以在启动后进行设置 以满足不同的优先级需求

线程的(同步)控制

一个Java程序的多线程之间可以共享数据 当线程以异步方式访问共享数据时 有时候是不安全的或者不和逻辑的 比如 同一时刻一个线程在读取数据 另外一个线程在处理数据 当处理数据的线程没有等到读取数据的线程读取完毕就去处理数据 必然得到错误的处理结果 这和我们前面提到的读取数据和处理数据并行多任务并不矛盾 这儿指的是处理数据的线程不能处理当前还没有读取结束的数据 但是可以处理其它的数据

如果我们采用多线程同步控制机制 等到第一个线程读取完数据 第二个线程才能处理该数据 就会避免错误 可见 线程同步是多线程编程的一个相当重要的技术

在讲线程的同步控制前我们需要交代如下概念

用Java关键字synchonized同步对共享数据 *** 作的方法

在一个对象中 用synchonized声明的方法为同步方法 Java中有一个同步模型 监视器 负责管理线程对对象中的同步方法的访问 它的原理是 赋予该对象唯一一把 钥匙 当多个线程进入对象 只有取得该对象钥匙的线程才可以访问同步方法 其它线程在该对象中等待 直到该线程用wait()方法放弃这把钥匙 其它等待的线程抢占该钥匙 抢占到钥匙的线程后才可得以执行 而没有取得钥匙的线程仍被阻塞在该对象中等待

file://声明同步的一种方式 将方法声明同步

class store  {public synchonized void store_in(){… }public synchonized void store_out(){  … }}

  利用wait() notify()及notifyAll()方法发送消息实现线程间的相互联系

Java程序中多个线程通过消息来实现互动联系的 这几种方法实现了线程间的消息发送 例如定义一个对象的synchonized 方法 同一时刻只能够有一个线程访问该对象中的同步方法 其它线程被阻塞 通常可以用notify()或notifyAll()方法唤醒其它一个或所有线程 而使用wait()方法来使该线程处于阻塞状态 等待其它的线程用notify()唤醒

一个实际的例子就是生产和销售 生产单元将产品生产出来放在仓库中 销售单元则从仓库中提走产品 在这个过程中 销售单元必须在仓库中有产品时才能提货 如果仓库中没有产品 则销售单元必须等待

程序中 假如我们定义一个仓库类store 该类的实例对象就相当于仓库 在store类中定义两个成员方法 store_in() 用来模拟产品制造者往仓库中添加产品 strore_out()方法则用来模拟销售者从仓库中取走产品 然后定义两个线程类 customer类 其中的run()方法通过调用仓库类中的store_out()从仓库中取走产品 模拟销售者 另外一个线程类producer中的run()方法通过调用仓库类中的store_in()方法向仓库添加产品 模拟产品制造者 在主类中创建并启动线程 实现向仓库中添加产品或取走产品

如果仓库类中的store_in() 和store_out()方法不声明同步 这就是个一般的多线程 我们知道 一个程序中的多线程是交替执行的 运行也是无序的 这样 就可能存在这样的问题

仓库中没有产品了 销售者还在不断光顾 而且还不停的在 取 产品 这在现实中是不可思义的 在程序中就表现为负值 如果将仓库类中的stroe_in()和store_out()方法声明同步 如上例所示 就控制了同一时刻只能有一个线程访问仓库对象中的同步方法 即一个生产类线程访问被声明为同步的store_in()方法时 其它线程将不能够访问对象中的store_out()同步方法 当然也不能访问store_in()方法 必须等到该线程调用wait()方法放弃钥匙 其它线程才有机会访问同步方法

lishixinzhi/Article/program/Java/gj/201311/27301

以上就是关于Java程序设计语言是什么意思全部的内容,包括:Java程序设计语言是什么意思、java程序设计的内容简介、Java程序设计等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10157951.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存