`
summer_021
  • 浏览: 57985 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java SE Lesson3_单例_Object类_String类

 
阅读更多
Java SE Lesson 3

1. 接口中所声明的方法都是抽象方法。接口中的方法都是public的。

2. 接口中也可以定义成员变量。接口中的成员变量都是public、final、static的。

3. 一个类不能既是final,又是abstract的。因为abstract的主要目的是定义一种约定,让子类去实现这种约定,而final表示该类不能被继承,这样abstract希望该类可以被继承而final明确说明该类不能被继承,两者矛盾。因此一个类不能既是final的,又是abstract的。

4. Design Pattern(设计模式)。单例模式(Singleton):表示一个类只会生成唯一的一个对象。
第一种方法:
public class SingletonTest {
	public static void main(String[] args) {
		Singleton singleton = Singleton.getInstance();
		Singleton singleton2 = Singleton.getInstance();

		System.out.println(singleton == singleton2);
	}
}

class Singleton {
	private static Singleton singleton;

	// 覆盖默认的构造方法
	private Singleton() {

	}

	public synchronized static Singleton getInstance() {
		if (singleton == null) {
			singleton = new Singleton();
		}
		return singleton;
	}
}



第二种方法:
public class SingletonTest {
	public static void main(String[] args) {
		Singleton singleton = Singleton.getInstance();
		Singleton singleton2 = Singleton.getInstance();

		System.out.println(singleton == singleton2);
	}
}

class Singleton {
	private static Singleton singleton = new Singleton();

	// 覆盖默认的构造方法
	private Singleton() {

	}

	public static Singleton getInstance() {
		return singleton;
	}
}




5. 包(package)。用于将完成不同功能的类分门别类,放在不同的目录(包)下。包的命名规则:将公司域名反转作为包名。www.baidu.sb,sb.baidu(包名),对于包名:每个字母都需要小写。如果定义类的时候没有使用package,那么Java就认为我们所定义的类位于默认包里面(default package)。

6. 编译带有package声明的Java源文件有两种方式:
    a) 直接编译,然后根据类中所定义的包名,逐一手工建立目录结构,最后将生成的class文件放到该目录结构中(很少使用,比较麻烦)。
    b) 使用编译参数 –d,方式为javac –d . 源文件.java,这样在编译后,编译器会自动帮助我们建立好包所对应的目录结构。

7. 有两个包名,分别是aa.bb.cc与aa.bb.cc.dd,那么我们称后者为前者的子包。

8. 导入(import),将使用package分离的各个类导入回来,让编译器能够找到所需要
的类。

9. import的语法:import sb.baidu.PackageTest;

10. import sb.baidu.*,表示导入sb.baidu包下面的所有类。

11. import aa.bb.*并不会导入aa.bb.cc包下面的类。这时需要这样写: import aa.bb.cc.*;

12. 关于package、import、class的顺序问题:
     a) 首先需要定义包(package),可选
     b) 接下来使用import进行导入,可选
     c) 然后才是class或interface的定义。

13. 如果两个类在同一个包下面,那么则不需要导入,直接使用即可。

14. 访问修饰符(access modifier)。
   1) public(公共的):被public所修饰的属性和方法可以被所有类访问。
   2) protected(受保护的):被protected所修饰的属性和方法可以在类内部、相同包以及该类的子类所访问(子类可以在不同包下,换句话说:能够被子类继承下来。 在子类内部生成父类对象,无法访问父类protected属性)。
   3) private(私有的):被private所修饰的属性和方法只能在该类内部使用(子类无法继承下来)。
   4) 默认的(不加任何访问修饰符):在类内部以及相同包下面的类所使用。

15. instanceof:判断某个对象是否是某个类的实例。语法形式:引用名 instanceof 类名(接口名),返回一个boolean值。

16、17点无。

    People people = new Man(); 
    System.out.println(people instanceof People);

//结果为true,因为Man是People的子类,根据继承,子类就是父类,因此Man也可以看作是People的实例。

18. 相等性的比较(==)
   1) 对于原生数据类型来说,比较的是左右两边的值是否相等。
   2) 对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同。

19.java.lang.Object类。java.lang包在使用的时候无需显式导入,编译时由编译器自动帮助我们导入。

20. API (Application Programming Interface),应用编程接口。

21. 当打印引用时,实际上会打印出引用所指对象的toString()方法的返回值,因为每个类都直接或间接地继承自Object,而Object类中定义了toString(),因此每个类都有toString()这个方法。

22. 关于进制的表示:16进制,逢16进一,16进制的数字包括:0~9,A,B,C,D,E,F,

23. equals()方法,该方法定义在Object类当中,因此Java中的每个类都具有该方法,对于Object类的equals()方法来说,它是判断调用equals()方法的引用与传进来的引用是否一致,即这两个引用是否指向的是同一个对象。对于Object类的equals()方法来说,它等价于==。

24. 对于String类的equals()方法来说,它是判断当前字符串与传进来的字符串的内容是否一致。

25. 对于String对象的相等性判断来说,请使用equals()方法,而不要使用==。

26. String是常量,其对象一旦创建完毕就无法改变。当使用+拼接字符串时,会生成新的String对象,而不是向原有的String对象追加内容。

27.对于String类型的java会维护 String Pool(字符串池)

28. String s = “aaa”;(采用字面值方式赋值)
    1) 查找String Pool中是否存在“aaa”这个对象,如果不存在,则在String Pool中创建一个“aaa”对象,然后将String Pool中的这个“aaa”对象的地址返回来,赋给引用变量s,这样s会指向String Pool中的这个“aaa”字符串对象

    2) 如果存在,则不创建任何对象,直接将String Pool中的这个“aaa”对象地址返回来,赋给s引用。

29. String s = new String(“aaa”);
    1) 首先在String Pool中查找有没有“aaa”这个字符串对象,如果有,则不在String Pool中再去创建“aaa”这个对象了,直接在堆中(heap)中创建一个“aaa”字符串对象,然后将堆中的这个“aaa”对象的地址返回来,赋给s引用,导致s指向了堆中创建的这个“aaa”字符串对象。

    2) 如果没有,则首先在String Pool中创建一个“aaa“对象,然后再在堆中(heap)创建一个”aaa“对象,然后将堆中的这个”aaa“对象的地址返回来,赋给s引用,导致s指向了堆中所创建的这个”aaa“对象。

                  String str = new String("aa");
		String str2 = new String("aa");
		System.out.println(str.equals(str2));// 比较字符串内容true
		System.out.println(str==str2);//false
		System.out.println(str.intern()==str2.intern());//true
		System.out.println(str.intern());//aa
		//intern:池里面有直接返回池里面的对象
		//池里面没有则放到池里面然后返回刚添加的对象
分享到:
评论

相关推荐

    北京圣思园Java培训教学视频 Java.SE.Lesson.2_code.rar

    综上所述,"北京圣思园Java培训教学视频 Java.SE.Lesson.2_code.rar"涵盖了Java SE的基础知识,包括面向对象编程、类与对象、基础语法、文件操作、集合框架以及异常处理等内容。配合张龙老师的讲解和配套源代码,...

    [北京圣思园Java培训教学视频]Java.SE.Lesson.3_code.rar

    【Java.SE.Lesson.3_code.rar】是一个与Java标准版(Java SE)相关的教学资源压缩包,由北京圣思园教育机构提供。这个压缩文件包含了Java编程语言的基础知识,特别是第三课的代码示例,旨在帮助学员深入理解和实践...

    lesson3_AM_SIMULINK_pluto_源码

    "Lesson3_AM_SIMULINK_pluto_源码"是针对这一主题的一个压缩包,其中包含了相关的Simulink模型文件。让我们详细分析这个过程。 AM调制是一种通信技术,它通过改变载波信号的幅度来携带信息。在模拟通信系统中,这种...

    evs -lesson 3_matlab_

    在本课程"evs -lesson 3_matlab_"中,我们专注于使用MATLAB这一强大的编程环境来解决环境科学中的问题。MATLAB(矩阵实验室)是一款广泛应用于工程、数学和科学领域的高级编程语言,以其易读性强、计算效率高以及...

    lesson7_work3_16_.zip_4 3 2 1

    标题“lesson7_work3_16_.zip_4 3 2 1”暗示着这是一个关于编程课程第七课的工作项目,可能涉及与单片机通信和控制蜂鸣器的频率。描述指出,当上位机(通常是计算机)发送数字1到单片机时,蜂鸣器将以每400毫秒的...

    [北京圣思园Java培训教学视频]Java.SE.Lesson.5_code.rar

    【Java.SE.Lesson.5_code.rar】这个压缩包文件显然包含了北京圣思园Java培训课程中的第五课时的源代码。这通常意味着我们将深入到Java编程语言的核心概念中,特别是那些在Java Standard Edition(Java SE)环境下的...

    收集的电子书 Java SE Lesson 2

    在标题“收集的电子书 Java SE Lesson 2”中,我们可以识别出本文档是一本关于Java SE(Standard Edition,标准版)的教程,具体为第二课的内容。Java SE是Java编程语言的核心平台,通常用于开发桌面应用程序、...

    Lesson24_3.ino

    Lesson24_3.ino

    stm32_Lesson3_USART_STM32中断_

    在“stm32_Lesson3_USART_STM32中断_”这个教程中,我们将深入探讨如何利用STM32的中断机制与USART结合,实现高效的数据传输。中断是微控制器处理外部事件的一种重要方式,它允许处理器在执行其他任务时响应事件,...

    [北京圣思园Java培训教学视频]Java.SE.Lesson.4_code.rar

    【Java.SE.Lesson.4_code.rar】这个压缩包文件包含了北京圣思园Java培训课程的第四课时的源代码,主要关注的是Java Standard Edition(Java SE)的相关编程知识。Java SE是Java平台的核心,用于开发和运行桌面应用...

    郭天祥51单片机_LESSON3_数码管静态显示及定时器和中断应用.ppt

    郭天祥51单片机_LESSON3_数码管静态显示及定时器和中断应用ppt,

    JAVA3_java_

    【标题】:“JAVA3_java_”可能指的是Java编程语言的第三个主要版本,或者是一个特定教程或项目的命名方式。在Java的发展历程中,我们通常所说的Java 3并没有一个明确的定义,因为Java的主要版本通常以Java 2平台为...

    Lesson1_Assignment_Class.html

    Lesson1_Assignment_Class.html

    java_lesson.rar_it

    It describes for JAVA API Lesson

    lesson4_FM_SIMULINK_pluto_

    标题“lesson4_FM_SIMULINK_pluto_”指的是一个关于使用Simulink模拟FM(频率调制)系统,特别是与Pluto设备相关的教学课程。在本课程中,我们将深入探讨FM调制的基本原理,Simulink环境的使用,以及如何通过Pluto...

    北京圣思园Java培训教学视频]Java.SE.Lesson.1_code.rar

    【标题】"北京圣思园Java培训教学视频]Java.SE.Lesson.1_code.rar" 提供的是一个关于Java Standard Edition(Java.SE)的初级教学资源,由北京圣思园教育机构制作。这个压缩包内含的主要是编程源代码,旨在帮助初学...

    stm32_Lesson4_CRC_stm32_stm32crc_

    在STM32Lesson4_CRC项目中,我们将深入探讨如何在STM32芯片上利用CRC单元进行数据校验。 STM32 CRC模块提供了一个高效的硬件引擎,可以计算16位或32位CRC值,支持自定义生成多项式,这使得它在不同应用中具有广泛的...

    lesson5_FM_SIMULINK_

    "lesson5_FM_SIMULINK_"标题暗示我们将会学习一个关于Simulink模型,该模型专注于模拟调频接收器的工作原理。描述中提到,输入的信号是音频信号,这表明模型将处理的是音频频率的调频广播信号。 调频(FM)是一种...

    七年级冀教版英语Lesson16_Happy_or_sad.ppt

    七年级冀教版英语Lesson16_Happy_or_sad.ppt

    LessonOne_Parts_Parts_solid_solidworks_parts_

    3. 放样:放样是将多个截面沿着路径融合,形成连续变化的三维形状。这对于设计如管道、壳体等有过渡变化的零件非常有用。 4. 扫描:扫描是将一个截面沿着引导线移动,创建出与路径相交的实体。这在创建类似螺纹、槽...

Global site tag (gtag.js) - Google Analytics