编译型编程特点

简介: 基础
  • 编译型编程语言
    指的是用专门的编译器,对于针对特定平台将某种高级语言编写的源代码一次性编译成可在该平台硬件执行的机器码,并打包成该平台所能识别的可执行性程序的格式。优点是执行效率比较高,缺点是无法跨平台运行。需要移植到其他平台上运行,需要采用特定平台的编译器重新编译。C,C++,Objective-C,Swift,Kotlin都属于此类。
  • 解释型编程语言
    使用特定的解释器对源代码进行逐行解释并立即执行的的语言。缺点是因为每次执行都需进行编译,运行效率低,而且不能脱离解释器独立运行,优点是可以跨平台运行,只要在特定平台上提供特定的解释器就行了。JavaScript,Ruby,Python都属于此类。
  • 伪编译型语言
    编译时只编译成中间代码,将中间代码和解释器一起打包成可执行文件。然后执行时使用解释器将中间代码解析成二进制代码。Visual Basic属于此类。

Java Java是通过javac编译器将源代码编译成跟平台无关的字节码(也就是.class文件),然后由不同平台上的 JVM(Java虚拟机)对字节码解释执行,在一些Java虚拟机的实现中,还会将字节码转换为特定系统的机器码,提高执行效率。Java语言不属于上面的任何一类,因为目前的高级语言较为复杂,已经不能简单地以编译型编程语言,解释型编程语言,伪编译型语言进行划分了。

Java中的访问控制符有哪些?

在Java中使用访问控制符修饰成员变量,方法,构造方法时

访问范围 private default protected public
本类中 允许 允许 允许 允许
同一包中 允许 允许 允许
其他包中的子类 允许 允许
其他包中 允许

private 允许在类中访问。

default 允许在类中,同一包中访问。

protected 允许在类中,同一包中,其他包中的子类 访问。

public 只允许在所有地方访问。

注意事项:

如果某个类Father一个方法A是没有使用访问修饰符,那么子类Son如果是在其他包中,不能调用这个方法A。但是如果方法A是使用protected修饰的,那么在子类中可以调用。(但是不能使用父类去调用,就是不能在子类中去创建父类对象,然后用父类对象去调用。)

具体可以看看下面这个例子:

package com.one;
//假设有一个Father类在包com.one下
public class Father {
    void defalutTest() {}
    protected void protectedMothod() {}
}
package com.two;
import com.one.Father;
public class Son extends Father {
    public static void main(String[] args) {
        Father father = new Father();
        father.protectedMothod()//位置1.这句代码会报错,因为即便是protected修饰的方法,在其他包中的子类中,也不能用父类去调用,只能按位置2或者位置4那样去调用
        Son son = new Son();
        son.protectedMothod();//位置2
    }
    void someMethod() {
        this.defaultMethod();//位置3.这句代码会报错,因为默认的方法不允许在其他包中的子类调用的
        this.protectedMothod();//位置4.可以调用成功
    }
}点击复制代码复制出错复制成功

Java的构造器有哪些特点?

public class Test {
    String str;
    public Test(String str) {
        this.str = str;
  }
}点击复制代码复制出错复制成功

1.如果没有自定义构造器,系统会提供一个默认的无参数构造器。如果提供了自定义的构造器,系统就不会提供默认的无参数构造器。(也就是不能直接调用new Test()来创建一个对象了,除非自己自定义一个无参数构造器)。

2.在上面的代码中,其实在构造器Test(String str)调用之前,系统已经分配好空间,创建一个对象,然后执行构造器Test(String str)方法对对象进行初始化,然后返回。

3.构造器一般使用public修饰符修饰,也可以使用protected,private来限制访问。

4.构造器重载,指的是一个类可以有多个构造器,多个构造器的参数列表不同。

目录
打赏
0
0
0
0
1543
分享
相关文章
linux模块化编程
linux模块化编程
307 0
7-188 编程团体赛
7-188 编程团体赛
224 0
编程会是你自由职业的一种选择吗
欢迎来到我的小院,前几天有个曾经我带过小弟问我,大侠我最近想从事自由职业,你能帮我参谋参谋嘛,我很高兴他来咨询我。思考后,我写了这段建议,希望可以帮助到他,同时也能给想从事自由职业的年轻人一些参考。
编程会是你自由职业的一种选择吗
编程题:为什么最后一个a是1不是5
前段时间有人在知乎上邀请我回答一个问题:为什么最后一个 a 是 1 不是 5?[1]
277 0
编程题:为什么最后一个a是1不是5
松本行弘:我的编程人生
松本行弘:我的编程人生
332 0
松本行弘:我的编程人生
pychon 开始编程
1 IDE 运行python 新建项目 新建hello.py文件 输入: print('hello world') image.png 运行hello.
1407 0
我似乎理解了编程的意义
编程的意义是什么,我又为什么要编程呢? 这是一个不时会浮现在我脑海中的问题,它来得并不频繁,但每次却都伴随着对自己职业生涯或人生目标的质疑而产生,令我感到些许困惑和不安。而在这十几年的职业生涯中,我也似乎总能在每个阶段为自己找到一个继续热爱编程的理由,直到它已无法解答再一次疑惑的产生。
1126 0
为什么学编程
知识在于点滴积累
750 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等