java 常见程序分析题

1. 

package readpro;

public class Man extends Person {
	public Man(){
		System.out.println("Man 初始化");
	}
	
	{
		System.out.println("Man 普通代码块");
	}
	
	static{
		System.out.println("static Man");
	}
	
	public static void main(String[] args) {
		Man man = new Man();
		man = new Man();
	}
}

class Person{
	
	static Person p = new Person();
	
	public Person(){
		System.out.println("Person 初始化");
	}
	{
		System.out.println("Person 普通代码块");
	}
	
	static{
		System.out.println("static Person");
	}
}

结果:当new Man()时,首先查看Man的父类有没有被加载,没有被加载,先加载父类,再加载子类,在加载父类的初始化阶段会对类变量指定值,会执行静态块的代码(静态变量的复制和静态代码块的执行顺序先后按照出现的顺序执行),在本例子中即先对Person p赋指定值new Person();在new Person()的过程中实例化阶段会执行普通代码块的内容会输出,在初始化时会执行构造方法,接着是对子类Man的加载,在初始化阶段回执行静态代码块的内容,然后实例化父类Person执行普通代码块内容,初始化执行构造器方法。这里注意 每次new子类,父类总是被实例化和初始化。

Person 普通代码块
Person 初始化
static Person
static Man
Person 普通代码块
Person 初始化
Man 普通代码块
Man 初始化
Person 普通代码块
Person 初始化
Man 普通代码块
Man 初始化

2. 

public class Test1 extends Base {

    private String name = "Test1";

    public Test1(){
        tellName();
        printName();
    }

    public void tellName(){
        System.out.println("Test1 tell name "+ name);
    }

    public void printName(){
        System.out.println("Test1 print Name "+ name);
    }
    public static void main(String[] args) {

        new Test1();
    }
}
class Base{
    private String name = "Base";
    public Base(){
        tellName();
        printName();
    }

    public void tellName(){
        System.out.println("Base tell name "+ name);
    }

    public void printName(){
        System.out.println("Base print Name "+ name);
    }
}

输出

Test1 tell name null
Test1 print Name null
Test1 tell name Test1
Test1 print Name Test1

 分析:实例化子类时先实例化父类,调用父类的构造方法public Base(){tellName();printName();} ,会调用tellName()和printName()方法,由于子类重写了两个方法,所以调用子类的tellName()和printName()方法,子类还没有被初始化,所以name为null。即出现该结果

 

持续添加。。。。。

 

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Java调优的常见面试题,以下是一些问题和答案: 问题1: 什么是Java调优?为什么需要进行Java调优? 答案: Java调优是指通过各种技术手段来提高Java程序的性能和效率。Java调优的目的是优化程序的资源利用,减少响应时间,提高并发能力。调优可以帮助我们发现和解决性能问题,提升应用程序的稳定性和用户体验。 问题2: 请列举一些常见Java调优技术? 答案: 常见Java调优技术包括: - JVM参数调优:通过调整JVM的参数,如堆内存大小、垃圾回收器等,来优化内存使用和垃圾回收效率。 - 多线程优化:合理使用线程池、避免使用锁和同步、减少线程上下文切换等,提高并发性能。 - 数据库连接池优化:合理配置数据库连接池的参数,减少数据库连接创建和销毁的开销。 - 缓存优化:使用缓存技术,如Redis、Memcached等,减少对数据库或其他外部资源的访问。 - 算法和数据结构优化:选择合适的算法和数据结构,提高程序的执行效率。 问题3: 如何监控和分析Java应用程序的性能问题? 答案: 监控和分析Java应用程序的性能问题可以使用以下工具: - Java VisualVM:可以监控Java应用程序的内存、线程、GC等情况,进行性能分析和故障排查。 - JConsole:可以监控Java应用程序的资源使用情况,如内存、线程、类加载等。 - JProfiler:一款商业化的Java性能分析工具,提供了丰富的功能和图形化界面。 - 压力测试工具:如Apache JMeter、Gatling等,用于模拟多用户并发访问情况,测试系统的性能瓶颈。 问题4: 如何解决Java应用程序的内存泄漏问题? 答案: 解决Java应用程序的内存泄漏问题可以采取以下措施: - 分析代码:通过代码审查和调试,查找可能引起内存泄漏的代码段。 - 使用内存分析工具:如Eclipse Memory Analyzer、VisualVM等,分析堆内存中的对象引用关系,找出内存泄漏的原因。 - 避免长期持有对象引用:当不再需要某个对象时,要及时将其引用置为null,以便垃圾回收器能够回收内存。 - 使用弱引用或软引用:对于不需要强引用的对象,可以使用弱引用或软引用,当内存不足时会被自动回收。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值