Java教程

java面试题-基础

本文主要是介绍java面试题-基础,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

简单理解面向对象

面向 对象 (Object Oriented)是 软件开发方法 ,一种编程范式 对应的还有 面向过程,面向函数
是对现实世界的抽象和模型化
用代码做现实世界的对照

1


5

⾯向过程 :⾯向过程性能⽐⾯向对象⾼。 因为类调⽤时需要实例化,开销⼤,比较消
耗资源,所以当性能是最重要的考量因素的时候,⽐如单⽚机、嵌⼊式开发、Linux/Unix 等
⼀般采⽤⾯向过程开发。但是,⾯向过程没有⾯向对象易维护、易复⽤、易扩展。

⾯向对象 :⾯向对象易维护、易复⽤、易扩展。 因为⾯向对象有封装、继承、多态性的特
性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是,⾯向对象性能
⽐⾯向过程低。

JAVA语言有哪些优点,那些缺点

优点
支持多线程,垃圾自动回收,面向对象,跨平台

缺点
面向对象,运行速度慢,容易被反编译,启动时间慢,属于高级语言不支持底层操作

JDK与JRE

JDK 开发环境,包含编译器,JRE的所有功能
JRE 运行环境,包含JVM,JAVA类库

JVM

JVM是用来运行JAVA编译之后的字节码

重写与重载

重写 是覆盖原有方法
重载是同名不同个数或类型的入参

String StringBuffer 和 StringBuilder 的区别是什么?

StringBuffer 对方法加了同步锁,线程安全
StringBuilder 未加锁,现成不安全

String 为什么是不可变的?

因为在string 中 存储数据的句柄用了 final 修饰,成员变量值不可改变
String s=”1”;s=”2”; 中创建了两个对象

== 与 equals(重要)

== 比较相等,判断两个对象是不是同一个对象,基本类型比较的是值,引用类型比较的是内存地址
默认情况下 equals()等价与==

hasCode

又称散列码 ,对数据进行摘要,提取指纹,具有 以下特性
对相同数据运算,结果相同
对不同数据运算,结果长度相同
运算单向不可逆

(重点) JAVA的方法参数只有值传递

形参只是实参的一个copy

如果形参的实际引用变了,实参不变
如果形参的成员变量变了,实参跟着改变

1


5


9


13


17


21


25


29


public class Main {
    public  static  class AAA{
        public String a;
        AAA(){
            
        }
    }
	public static void main(String[] args) {
		System.out.println("Hello, World");
	    AAA aa=new AAA();
	    aa.a="1";
 	System.out.println(aa);
	System.out.println(aa.a);
        test(aa);
        	System.out.println(aa.a);
	    
	}
	
	public static void test(AAA a){
	      a=new AAA();
	      a.a="2";
	      System.out.println(a);
	}
}

------
输出结果
Hello, World
Main$AAA@6ff3c5b5

Main$AAA@3764951d

简述线程、程序、进程的基本概念。以及他们之间关系是什么?

系统运行程序到停止就是一个进程创建到消亡的过程,而线程则是进程的更小单位

  • 版权声明: 本博客所有文章除特别声明外,均采用 反996许可证版本1.0 许可协议。转载请注明出处!
这篇关于java面试题-基础的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!