请问这段java计算器代码代码是什么意思?用的是什么语法格式?

Java代码在我们计算机上是如何运行的?
我的图书馆
Java代码在我们计算机上是如何运行的?
“当控制输出Hello world ! 的时候,代码在计算机内部经历了什么?Java代码在我们计算机上到底如何运行的?”1.cmd运行.java文件javac是java语言编程编译器。全称java compiler。a.查看电脑上是否有Java的环境。b.输入命令:javac Test.java编译过程。注意:文件名和类名完全一致。2. .java文件执行完毕生成.class文件a.运行.class文件输入:java Test运行报错:
经过一番百度错误原因:高版本的JDK编译的Java class文件在较低版本的JVM上运行,就会报此错误。小编很慌张查看了一下JDK的版本:cmd->java -version:果然不一样。果断下载java version 1.8。成功运行:3.JVM的作用什么是JDK、JVM、JREJDK(Java Development Kit) 是 Java 语言的软件开发工具包(SDK)。JVM(Java Virtual Machine),Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行,所以Java能够“一次编译,到处运行”。JRE(Java Runtime Environment,Java运行环境),包含JVM标准实现及Java核心类库。4.Java代码的变异过程编译原理。此图来源及以下内容来源:https://blog.csdn.net/fuzhongmin05/article/details/词法分析:读取源代码,一个字节一个字节的读进来,找出这些词法中我们定义的语言关键词如:if、else、while等,识别哪些if是合法的哪些是不合法的。这个步骤就是词法分析过程。从源代码中找出了一些规范化的token流,就像人类语言中,给你一句话你要分辨出哪些是一个词语,哪些是标点符号,哪些是动词,哪些是名词。语法分析:就是对词法分析中得到的token流进行语法分析,这一步就是检查这些关键词组合在一起是不是符合Java语言规范。如if的后面是不是紧跟着一个布尔型判断表达式。形成一个符合Java语言规定的抽象语法树,抽象语法树是一个结构化的语法表达形式,它的作用是把语言的主要词法用一个结构化的形式组织在一起。这棵语法树可以被后面按照新的规则再重新组织。语义分析:语法分析完成之后也就不存在语法问题了,语义分析的主要工作就是把一些难懂的,复杂的语法转化成更简单的语法。就如难懂的文言文转化为大家都懂的百话文,或者是注释一下一些不懂的成语。将复杂的语法转化为简单的语法,对应到Java就是将foreach转化为for循环,还有一些注释等。最后生成一棵抽象的语法树,这棵语法树也就更接近目标语言的语法规则。字节码生成:将会根据经过注释的抽象语法树生成字节码,也就是将一个数据结构转化为另外一个数据结构。就像将所有的中文词语翻译成英文单词后按照英文语法组装文英文语句。代码生成器的结果就是生成符合java虚拟机规范的字节码。说明:设计编译原理和JAVA虚拟机,我了解的不多,还得继续学习呀。谢谢大家。
推一荐:&&|&&
喜欢该文的人也喜欢JAVA编程语法_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
JAVA编程语法
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩10页未读,
定制HR最喜欢的简历
你可能喜欢【图文】Java基本语法_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&100W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Java基本语法
阅读已结束,下载本文到电脑
定制HR最喜欢的简历
你可能喜欢请问java里这种源代码是根据什么原理或者说语法敲出来的?_百度知道
请问java里这种源代码是根据什么原理或者说语法敲出来的?
本人新手自学,老师直接就敲出来了,看似简单,当我自己去敲才发现不知道敲什么,怎么敲,请问这种源代码是需要语法之类的主谓宾结构吗?英语自己过得去,而且这些意思也懂,就是不知...
本人新手自学,老师直接就敲出来了,看似简单,当我自己去敲才发现不知道敲什么,怎么敲,请问这种源代码是需要语法之类的主谓宾结构吗?英语自己过得去,而且这些意思也懂,就是不知道怎么敲,根据什么来敲的
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
Buddhacrazy
来自电脑网络类芝麻团
Buddhacrazy
采纳数:44
获赞数:210
参与团队:
{}&中间的表示代码块class&表示&以下代码块是一个“类”,类的定义,参见Test表示这个类的名称为Test,根据类的具体用途任意取名Main为方法名,表示下面的代码块是一个方法,public static void Main(String[] args),是一个特定的方法(main方法),表示程序执行的入口void表示这个方法没有返回值public为访问控制符,表示这个类是公共类,同样public可以用在类,方法,属性前面表示这个类、方法、属性是公共的,即在任何地方都可以访问,关于访问控制符,参见static表示这个方法为静态方法,关于静态方法,参见或类的定义格式为:访问控制符&class&类名{访问控制符&数据类型&属性名;访问控制符&数据类型&方法名(数据类型&参数名){//方法内容};}其中 ,访问控制符&可以是&&public private protected数据类型&可以是&int、String、char等基本类型,也可以是一个类,方法的返回可以是void,表示这个方法不返回数据说来话长,找本入门的书先看看吧
采纳数:149
获赞数:293
擅长:暂未定制
一直吹风不凉
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。java中lambda表达式的语法和使用讲解
lambda表达式在jdk1.8中被加入进来,给古老的java语言注入了新鲜的活力。先说句题外话,我看了一些早期spark(大数据计算框架)的书,当时spark支持scala,java和python,其中,spark的很多api(如map,flatmap,filter等)在scala和python中都可以使用lambda表达式轻松搞定,很简洁,无奈的java使用匿名内部类,冗长的包名,复杂的嵌套,最内侧的方法可能只是一个简单的表达式,看着实在是别扭。自从java8支持了lambda表达式以后,不仅使java增加了新的语言特性,还因此新增了一些其他api库,如并行和stram api等。本篇博客主要讨论lambda表达式的语法和使用,关于并行编程和stream api会在以后的博客中专门讨论。
在java中使用lambda表达式的话,需要注意两点:一个是lambda表达式本身的语法,另一个是函数式接口(functional interface)。
labmda语法
java8新增了一个操作符-&,称为lambda操作符或箭头操作符,它将lambda表达式分为两部分,箭头之前的是参数,箭头之后的是动作。例如,
(Integer n1,Integer n2) -& n1 + n2
这个就相当于
Integer method(Integer n1, Integer n2) {
return n1 + n2;
参数的类型可以省略,因为可以推断出来。
(n1,n2) -& n1 + n2
如果只有一个参数的话,圆括号也可以省略,像这样
n1 -& n1 * n1
如果没有参数的话,箭头前面的圆括号是不能省略的,例如:
() -& 5; //固定返回5
箭头符号右侧是动作,除了我们看到的这种单行的形式之外,还可以声明一个代码段作为动作,像下面这样
return n *
这个代码段可以写的很长很长。如果有返回值的话,需要使用return语句返回。
functional interface
在java中,lambda表达式一定要结合functional interface来使用,functional interface是指一个只包含一个抽象方法的接口。下面来看一个例子。这是一个functional interface:
public interface MyInterface {
int doSomething(int number);
然后,声明一个此类型的lambda表达式
MyInterface myInterface = n -& n + 1;
int number = myInterface.doSomething(5);
可以理解为,lambda表达式从语法上简化了匿名内部类,但底层的实现好像都一样。再来看一个两个参数的例子。
public interface MyInterface2 {
int doSomething(int num1, int num2);
下面来声明一个该类型的lambda表达式
MyInterface2 myInterface2 = (n1, n2) -& n1 + n2;
number = myInterface2.doSomething(5, 9);
输出的结果是14。
我还可以使用一个更加复杂的lambda表达式
myInterface2 = (n1, n2) -& {
int max = 0;
if (n1 & max) {
if (n2 & max) {
这个lambda表达式返回n1,n2和0中较大的一个。
myInterface2.doSomething(10, 20);
// return 20
myInterface2.doSomething(-10, -20); // return 0
说到lambda表达式,有一个话题是绕不开的,就是闭包。但这个问题在java中被简化了好多。这个问题可以分为两种情况来讨论:
1. lambda表达式可以访问到所在的类中定义的字段(filed),也可以修改这个字段。
2. lambda表达式可以访问到外层代码块(enclosing scope)中定义的本地变量(local varable),但不能修改他们,并且,如果一个本地变量在lambda表达式中被读取的话,这个变量必须是final或事实上final(变量赋值以后就不能再任何地方再修改了)。
看下面的例子
public class App {
private int filed1 = 10;
void method1() {
int varable1 = 10;
MyInterface myInterface = n -& {
filed1 += 2;
//可读取,可修改
int m = varable1;
//varable1 += 2;
//不可修改
//varable1 += 2;
//已经在lambda表达式中被读取了,就是final了,不能被修改。
在这个例子中,filed1是一个字段,所以在lambdda表达式中可读可写,而varable1是一个本地变量,在lambda表达式中只能被读取而不能被修改,并且,一旦这个变量在lambda表达式中被读取了,那么在任何地方就不能被修改了。
lambda表达式的本质是一个匿名方法,但如果有一个方法的签名(参数列表和返回值)和functional interface的签名一样并且逻辑正好是你需要的,那么你可以使用方法引用的方式来将它赋值给你的functional interface,而无需再编写lambda表达式。方法引用是jdk1.8中被引入的新语法,它跟lambda表达式息息相关,从字面意思来看,方法引用指向一个方法,但不调用它。其实这个特性在很多编程语言中都已经支持了,java也终于支持了。像其它编程语言一样,加括号就是调用方法,不加括号就是引用方法。
方法引用可以引用四种类型的方法,分别是:静态方法,实例方法,泛型方法,构造方法,引种每种方法的语法有略有区别。下面分别看个例子。下面这个类包含三个方法,对应前三种类型
public class MyClass {
public int instanceMethod(int number) {
return number * 2;
public static int staticMethod(int number) {
return number * 2;
int genericMethod(T param) {
return param.intValue() * 2;
方法引用的操作符是两个冒号`::`,这也是一个新的操作符。
引用静态方法
引用静态方法的语法是ClassName::methodName
myInterface = MyClass::staticM
myInterface.doSomething(5);
引用实例方法
应用实例方法的语法是instance::methodName
MyClass myClass = new MyClass();
myInterface = myClass::instanceM
myInterface.doSomething(5);
应用泛型方法
MyClass myClass = new MyClass();
myInterface = myClass::genericM
myInterface.doSomething(5);
引用构造方法
引用构造方法的语法是ClassName::new构造方法的返回值是它所在的类的类型。下面编写一个functional interface和一个构造函数。先来一个类和它的构造函数
public class Foo {
String msg1, msg2;
public Foo(String msg1, String msg2) {
this.msg1 = msg1;
this.msg2 = msg2;
在来一个functional interface
interface FooInterface {
Foo fooMethod(String m1, String m2);
这个里面的fooMethod的返回值是Foo,参数列表是两个String对象,与Foo类的构造函数的签名一致。下面是引用这个构造方法的方式
FooInterface fooInterface = Foo::
Foo fooObj = fooInterface.fooMethod(&hello&, &world&);}

我要回帖

更多关于 java计算器代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信