1.java代码为什么可以实现一次编写,到处运行

参考答案:
JVM(java虚拟机)是java跨平台的关键。
在程序运行前,java源代码(.java)需要经过编译器编译成字节码(.class)。在程序运行时,jvm负责将字节码翻译成特定平台下的机器码并运行,也就是说,只要在不同的平台上安装对应的JVM,就可以运行字节码文件。

同一份Java源代码在不同的平台上运行,它不需要做任何的改变,并且只需要编译一次。而编译好的字节码,是通过jvm这个中间的“桥梁”实现跨平台的,JVM是与平台相关的软件,它能将同意的字节码翻译成该平台的机器码。

注意事项:
1.编译的结果是生成字节码,不是机器码,字节码不能直接运行,必须通过JVM翻译成机器码才能运行;
2.跨平台的是Java程序,而不是jvm,JVM是用c/c++开发的软件,不同平台下需要安装不同版本的jvm。
过程,java源码,编译器翻译成字节码,jvm将字节码翻译成机器码

一个java文件里可以有多个类吗(不含内部类)?

一个java文件里可以有多个类,但最多只能有一个被public修饰的类
如狗这个java文件中包含public修饰的类,则这个类的名称必须和Java文件名一致。

说一说你对java访问权限的了解

java访问权限主要是通过三种修饰符,即private,public ,protected,在使用这些修饰符修饰目标时,一共可以形成四种访问权限,即private,default,protected,public,default访问权限为不加任何修饰符时的访问权限。
在修饰成员变量/成员方法时,该成员的四种访问权限的含义如下:
private:该成员可以被该类内部成员访问
default:该成员可以被该类内部成员访问,也可以被同一包下的其他的类访问;
protected:该成员可以被该类内部成员访问,也可以被同一包下其他的类访问,还可以被它的子类访问;
public:该成员可以被任意包下,任意类的成员进行访问。
在修饰类时,该类只有两种访问权限,对应的访问权限的含义如下:
default:该类可以被同一包下其他的类访问;
public:该类可以被任意包下,任意的类所访问。

1.4 介绍一下Java的数据类型

参考答案

Java数据类型包括基本数据类型和引用数据类型两大类。

基本数据类型有8个,可以分为4个小类,分别是整数类型(byte/short/int/long)、浮点类型(float/double)、字符类型(char)、布尔类型(boolean)。其中,4个整数类型中,int类型最为常用。2个浮点类型中,double最为常用。另外,在这8个基本类型当中,除了布尔类型之外的其他7个类型,都可以看做是数字类型,它们相互之间可以进行类型转换。

引用类型就是对一个对象的引用,根据引用对象类型的不同,可以将引用类型分为3类,即数组、类、接口类型。引用类型本质上就是通过指针,指向堆中对象所持有的内存空间,只是Java语言不再沿用指针这个说法而已。

扩展阅读

对于基本数据类型,你需要了解每种类型所占据的内存空间,面试官可能会追问这类问题:

byte:1字节(8位),数据范围是 -2^7 ~ 2^7-1。

short:2字节(16位),数据范围是 -2^15 ~ 2^15-1。

int:4字节(32位),数据范围是 -2^31 ~ 2^31-1。

long:8字节(64位),数据范围是 -2^63 ~ 2^63-1。

float:4字节(32位),数据范围大约是 -3.410^38 ~ 3.410^38。

double:8字节(64位),数据范围大约是 -1.810^308 ~ 1.810^308。

char:2字节(16位),数据范围是 \u0000 ~ \uffff。

boolean:Java规范没有明确的规定,不同的JVM有不同的实现机制。

对于引用数据类型,你需要了解JVM的内存分布情况,知道引用以及引用对象存放的位置,详见JVM部分的题目。

介绍下全局变量和局部变量的区别

jJava中的变量分为成员变量和局部变量,它们的区别如下:

成员变量:

成员变量是在类的范围里定义的变量;

成员变量有默认初始值;

未被static修饰的成员变量也叫实例变量,它存储于对象所在的堆内存中,生命周期与对象相同;

被static修饰的成员变量也叫类变量,它存储于方法区中,生命周期与当前类相同。

局部变量:

局部变量是在方法里定义的变量;

局部变量没有默认初始值;

局部变量存储于栈内存中,作用的范围结束,变量空间会自动的释放。

注意事项

Java中没有真正的全局变量,面试官应该是出于其他语言的习惯说全局变量的,他的本意应该是指成员变量。

1.7 请介绍一下实例变量的默认值
参考答案

实例变量若为引用数据类型,其默认值一律为null。若为基本数据类型,其默认值如下:

byte:0

short:0

int:0

long:0L

float:0.0F

double:0.0

char:‘\u0000’

boolean:false

注意事项

上述默认值规则适用于所有的成员变量,所以对于类变量也是适用的。

.10 如何对Integer和Double类型判断相等?
参考答案

Integer、Double不能直接进行比较,这包括:

不能用==进行直接比较,因为它们是不同的数据类型;

不能转为字符串进行比较,因为转为字符串后,浮点值带小数点,整数值不带,这样它们永远都不相等;

不能使用compareTo方法进行比较,虽然它们都有compareTo方法,但该方法只能对相同类型进行比较。

整数、浮点类型的包装类,都继承于Number类型,而Number类型分别定义了将数字转换为byte、short、int、long、float、double的方法。所以,可以将Integer、Double先转为转换为相同的基本数据类型(如double),然后使用==进行比较。

java基础恶补1(基础)(内容来自牛客网Java宝典)相关推荐

  1. 【牛客网java练习错题笔记】 --Java基础打卡day002

    [牛客网java练习错题笔记] --Java基础打卡day002 1 根据以下代码段,正确的是 2 在Java中,在同一包内,类Cat里面有个公共方法sleep(),该方法有static修饰,所以可以 ...

  2. 牛客网 Java 工程师能力评估 20 题 - 详解

    牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...

  3. Java算法:牛客网Java版剑指Offer全套算法面试题目整理及电子档,Java算法与数据结构面试题,面试刷题、背题必备!牛客网剑指offer

    剑指offer(java版) 牛客网Java版剑指Offer全套题目67道 资源来源于网络 目录 1.二维数组中的查找 2.替换空格 3.从尾到头打印链表 4.重建二叉树 5.用两个栈实现队列 6.旋 ...

  4. 牛客网Java选择题练习

    牛客网Java选择题练习 2021/1/12 2021/1/13 2021/1/14 2021/1/16 2021/1/17 2021/1/18 2021/1/20 2021/1/21 2021/1/ ...

  5. 牛客网java刷题笔记2019-1-4

    牛客网java刷题笔记 2019-1-4 1.java中可以用类中构造器调用其他类构造器(这个和C++中构造函数很类似)用于初始化程序变量值, 构造器和方法的区别: 功能和作用的不同 构造器是为了创建 ...

  6. 牛客网Java刷题知识点之关键字static、static成员变量、static成员方法、static代码块和static内部类...

    不多说,直接上干货! 牛客网Java刷题知识点之关键字static static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个"伪全局"的概 ...

  7. 牛客网Java刷题知识点之构造函数可以调用一般函数,但是一般函数不可以直接调用构造函数...

    不多说,直接上干货! 通过 牛客网Java刷题知识点之构造函数是什么.一般函数和构造函数什么区别呢.构造函数的重载.构造函数的内存图解 我们对构造函数有了一个比较清楚的认识,当我们在创建对象时,我们会 ...

  8. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  9. 牛客网Java刷题知识点之ArrayList 、LinkedList 、Vector 的底层实现和区别

    不多说,直接上干货! 这篇我是从整体出发去写的. 牛客网Java刷题知识点之Java 集合框架的构成.集合框架中的迭代器Iterator.集合框架中的集合接口Collection(List和Set). ...

最新文章

  1. python连接access数据库查询并打印出来_Python连接Access和读取Access数据库的例子
  2. NETCONF 环境搭建
  3. 运动控制器对比:Windows MR、Rift、Vive、PSVR(译文修正版)
  4. python程序实例源代码-python下10个简单实例代码
  5. 312. Burst Balloons 戳气球
  6. deepin下Clion连接mysql_CLion如何添加依赖库 ? 需要把mysql/Connector c++放入 用cpp连接数据库...
  7. ORACLE日期时间函数大全(一)
  8. Leetcode 133.克隆图
  9. 使用 SqlDataSource 控件查询数据47
  10. Sympy符号计算库
  11. GrADS读取.grb2文件记录
  12. 电脑怎么打印pdf文件,电脑中保存的pdf文件怎么打印
  13. 计算机控制液压同步顶升系统,变频控制同步顶升液压系统
  14. 百度联盟广告代码php,仿百度联盟对联广告实现代码
  15. 15个HTML5播放器插件
  16. REST Assured 5 - Abstraction抽象,隐藏实现
  17. 关于ETD.sys的系统蓝屏问题的解决
  18. java下bin目下的exe
  19. 战国策评析(三)---齐
  20. 空白符号复制?空白符合怎么打?空字符和空白字符

热门文章

  1. 关于bootstrap 对于 IE9 的兼容问题
  2. word修订显示修订人_美丽的滑出导航修订
  3. FPGA数字信号处理(六)直接型IIR滤波器Verilog设计
  4. Command vue init requires a global addon to be installed. Please run undefined @vue/cli-init and t
  5. 【董天一】IPFS的竞争对手们(二)
  6. matlab的svpwm逆变器,基于matlab的SVPWM逆变器死区补偿算法仿真研究
  7. c语言文本相似度分析系统,某课程设计---文件相似度判断
  8. u盘插到电脑计算机里没有反应,我的U盘插到电脑上没有反应、是USB口的原因还是因为什么? 爱问知识人...
  9. typora绑定github博客_Typora加图床插件,写博客的最佳套餐!
  10. 【Flask和Docker部署Pytorch深度学习模型】