Java基础知识

本文深入讲解Java程序执行流程、JDK与JRE的区别、输入数据方法优化、浮点数比较陷阱、位运算符细节、内存管理机制、多线程并发控制、抽象类与接口的应用、字符串比较区别及对象生命周期管理等核心知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. java程序执行:
[外链图片转存失败,源站可能有防盗在这里插入!链机制,建描述]议将图片上https://传(imblog.dnimg.cn/202BLjS10328094202368.ng9)(https://img-blog.csdnimgcn/20210328094202368.png)]2. jdk和jre的区别:
    jdk面向开发人员,可以进行调试;
    jre面向使用人员,只能运行java程序。
3. 输入数据方法:

BufferedReader buf =  
	new BufferedReader(new InputStreamReader(System.in));
String str =  buf.readLine();
/*-------------优化后--------------*/
Scanner reader = new Scanner(System.in);
double num = reader.nextDouble();

4. 浮点数之间不能做“==”的比较,结果不正确。
5. >>与>>>的区别:
    >>区分正负数右移,正数补0,负数补1。
    >>>不区分正负数右移,一律补0。
6. 栈内存和堆内存:
    基本数据类型和引用变量都存放在栈内存,当new了一个变量时,便会在堆内存产生一个对象变量,而栈内存存放这个对象变量的首地址。当变量置为 null 时,在堆内存的此变量将会在特定时间内被垃圾回收器回收。
栈内存和堆内存
7. 成员变量修饰符volatile:易失修饰符,指定改变量可以同时被多个线程控制和修改。
    成员方法修饰符synchronized:同步修饰符,对同步资源加锁,以防止其他线程访问。
8. 方法中的可变参数:
   返回值类型 方法名(固定参数列表,数据类型…可变参数名)
   eg:void display(int x,String…arg) //arg相当于数组名,用数组名提取可变参数的值。
9. 构造方法:一个类中只定义了有参的构造方法,则不能调用无参的构造方法。
10. 静态初始化器:在类被加载入内存时只执行一次,与创建多少对象无关,而构造方法new多少次就被调用多少次。
    静态修饰的成员优先被执行。

static{
}

9. Java语言的垃圾回收:当一个对象没有被引用时,系统就会自动清除这些无用对象进行内存回收。当一个对象只要被引用了,系统就不会回收它,这也是Java占内存的原因。
10. 字符串比较:使用“==”是比较两者在内存中的地址是否相同,而使用“equals()”是比较两者的内容是否相同。
11. 使用覆盖时,才存在父类对象调用子类成员。而子类只需继承即可使用父类非私有成员。
在这里插入图片描述12.抽象类
    抽象类方法也已为一般方法也可以为抽象方法。
   继承抽象类的子类必须实现抽象类的所有抽象方法。
13. 接口
   接口的成员都是公共的,在定义时可省略,而在实现时不可省略。
   接口的数据成员都是静态且初始化的,默认为public static final。
   接口的抽象方法(省略修饰符),默认为public abstract。
   默认方法可以不被实现,也可被覆盖。
14. 线程
   通过继承Thread或实现Runnable接口,并重写run()来激活线程。run()为实现线程的代码。
   一般通过start()启动线程,而不是通过run()。
   Runnable接口本身并无线程功能,需要注入到线程对象中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值