`

java 学习记录

阅读更多

   this关键字,表示这个对象,当前对象,它代表当前对象的引用

	public static class Test {
		private int i = 0;

		public Test iii() {
			i++;
			return this;
		}

		public void getI() {
			System.err.println(i);
		}
	}

	public static void main(String[] args) {
		Test test = new Test();
		test.iii().iii().iii().getI();
	}

    输出 : 3

 

    this调用构造器,只能调用一个,必须置于起始处 

	public static class Test {
		public Test() {
			this("a");
		}

		public Test(String a) {
			this(a, "b");
		}

		public Test(String a, String b) {

		}

	}

 

 

可变参数列表

	public static class Test {

		public Test(int a, String... strings) {
			for (String s : strings) {
				System.err.print(s + "-");

			}
			System.err.println(a);
		}

	}

	public static void main(String[] args) {
		new Test(0);
		new Test(1, "a", "b", "c");
		new Test(2, new String[] { "a", "b" });
	}

    输出:

            0
           a-b-c-1
           a-b-2

 

                  ------------------------------------------------数组---------------------------------------------

 1. 数组是一个简单的线性序列,比ArrayList快,代价大小固定。

 2. Arrays..toString() 格式化输出数组。

		int[] i = new int[]{1,2,3,4};
		System.err.println(i); //[I@330cdec1
		System.err.println(Arrays.toString(i) );//[1, 2, 3, 4]

 3. 数组的方法length 貌似还有clone()。

 4. 对象数组保存的是引用,基本类型数组直接保存基本类型的值。

 5.多维数组 用Arrays.deepToString()格式化输出,多维数组中构成矩阵的每个向量都可以具有任意的长度  int[][] i = new int[][]{{1,2},{1}};初始化的时候可以这样  int[][] i = new int[3][];,然后再去慢慢定义第二维度

		int[][] i = new int[2][2];
		System.err.println(i); //[[I@330cdec1
		System.err.println(Arrays.toString(i) );//[[I@11f46b16, [I@45a27a8f]
		System.err.println(Arrays.deepToString(i) );//[[0, 0], [0, 0]]

 6.数组与泛型不能很好的结合,有解决办法,但是既然java这么设计,干脆就不这样结合了。直接用泛型容器吧。

 7.Arrays类中有一套用于数组的静态方法,其中有6个本地方法

    equals(数组1,数组2) 比较两个数组是否相等,deepEquals用于多维数组。基本元素比较,需要使用基本类型的包装器类的equal()方法。

    fill()  用一个值填充各个位置,对对象而言就是复制同一个引用进行填充

    sort() 用于对数组排序,对象要实现Comparable<T>或者Comparator<T>接口

		Arrays.sort(i,Collections.reverseOrder());//倒叙
		Arrays.sort(i,String.CASE_INSENSITIVE_ORDER);//忽略大小写

   binarySearch() 用于在已经排序好的数组中查找元素。

    还有上面的toString。

   Arrays.asList() 接收任意的序列或者数组作为其参数

 8. java标准类库还提供有static方法System.arraycopy(),用它复制数组必用for循环要快很多

      System.arraycopy(数组1, 从这里开始复制, 复制到数组二, 从这里开始复制, 复制长度);

 9.程序设计的基本目标:将保持不变的事物与会发生改变的事物相分离。

 10. java标准类库中的排序算法针对正排序的特殊类型进行了优化-对于基本类型设计的快速排序,针对对象设计的稳定归并排序。所以无需担心排序的性能,除非你可以证明排序部分确实是程序效率的瓶颈。

     

 

                  ------------------------------------------------类初始化顺序---------------------------------------------

       在类内部,变量的先后顺序,决定了初始化的顺序,即使变量定义散步于方法定义之间,它依旧会在任何方 法包括构造器被调用之前得到初始化。 静态变量的顺序优先于非静态

        通过类直接调用静态方法或着类变量,类中的所有静态变量都会被初始化。这也是所谓静态变量在类加载的时候初始化。也是为什么要有懒汉式和饿汉式

 

                  ------------------------------------------------守护线程---------------------------------------------

 

定义:    守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开。

优先级: 守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。

设置:    通过setDaemon(true)来设置线程为“守护线程”;将一个用户线程设置为守护线程的方式是在 线程v                对象创建 之前 用线程对象的setDaemon方法。

example: 垃圾回收线程就是一个经典的守护线程,当我们的程序中不再有任何运行的Thread,程序就不会再                  产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是JVM上仅剩的线程时,垃圾回收线程                会自动离开。它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。

生命周期:守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种                    任务或等待处理某些发生的事件。也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同                   生共死”。那Java的守护线程是什么样子的呢。当JVM中所有的线程都是守护线程的时候,JVM就                   可以退了;如果还有一个或以上的非守护线程则JVM不会退出。

Thread daemonTread = new Thread();
 
  // 设定 daemonThread 为 守护线程,default false(非守护线程)
 daemonThread.setDaemon(true);
 
 // 验证当前线程是否为守护线程,返回 true 则为守护线程
 daemonThread.isDaemon();

 这里有几点需要注意: 

 

(1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。

(2) 在Daemon线程中产生的新线程也是Daemon的。 

(3) 不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑。

 

                  ------------------------------------------------多参数方法---------------------------------------------

可以将参数,设置成自定义的枚举。

将多个有关系的参数放到一个类中。

 

分享到:
评论

相关推荐

    Java 学习笔记Java学习笔记

    Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现为Oracle公司的一部分)于1995年发布。...Java学习笔记涵盖了这些核心知识点,通过深入学习和实践,你可以逐步掌握Java编程,并应用于实际项目开发中。

    java学习笔记1

    Java学习笔记1是学习Java过程中的笔记,主要记录了Eclipse开发环境中的快捷键使用、编辑功能、查找和调试等知识点。 Eclipse快捷键 Eclipse中有许多快捷键,掌握这些快捷键可以大大提高开发效率。下面列举了一些...

    Java学习笔记——良葛格

    "Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java Development Kit)是Java开发的核心工具集,包含了编译器、调试器和运行环境等...

    (完整版)最全的java学习笔记(必看).pdf

    Java学习笔记 Java是一种流行的编程语言,广泛应用于Android应用程序开发、Web应用程序开发、桌面应用程序开发等领域。以下是Java学习笔记的摘要信息: 一、Java技术基础 * 1.1 编程语言:Java是一种面向对象的...

    Java学习笔记学习笔记

    Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习笔记Java学习...

    JAVA学习笔记 林信良

    《JAVA学习笔记》是林信良先生的一部深入浅出的Java编程教程,旨在帮助初学者和有一定经验的开发者巩固和提升Java编程技能。这本书涵盖了Java语言的基础到高级概念,是一份宝贵的自学资料。 首先,从基础部分开始,...

    韩顺平编写的java学习笔记(全)

    ### 韩顺平编写的Java学习笔记概览 #### Java平台分类与运行机制 - **J2SE(Java 2 Platform, Standard Edition)**: 标准版Java开发平台,适用于桌面应用程序开发。 - **J2EE(Java 2 Platform, Enterprise ...

    Java学习笔记(必看经典).pdf

    本知识点的标题为“Java学习笔记(必看经典)”,意味着所整理的内容是针对Java初学者的一系列核心概念和原理的总结。 首先,面向对象编程是Java语言的核心,它与传统的面向过程编程有显著的不同。面向对象编程强调的...

    java学习笔记.zip

    java学习笔记java学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记.zipjava学习笔记...

    java学习笔记(全)

    Java学习笔记全集是针对Java编程语言的一份详尽的学习资料,它涵盖了从基础到进阶的各个层面,旨在帮助初学者系统地学习Java,并为有一定经验的开发者提供复习和巩固知识的平台。这份笔记主要关注Java语言的核心概念...

    Java学习笔记(必看经典).doc

    这份“Java学习笔记(必看经典).doc”文档将涵盖Java的核心概念和重要知识点,对于初学者和有经验的开发者来说都是宝贵的参考资料。 首先,Java的基础部分通常包括以下几个方面: 1. **Java语法基础**:这是所有...

    《Java学习笔记》

    这份《Java学习笔记》包含了丰富的知识内容,旨在帮助学习者全面掌握Java编程技术。笔记分为7个PDF部分,覆盖了从基础到高级的Java编程概念。 1. **Java基础知识**:这部分内容通常包括Java的历史背景、环境配置、...

    java学习笔记.pdf

    "Java学习笔记" 本资源是一个关于Java编程语言的学习笔记,涵盖了Java的基础知识、语法、数据类型、变量、类型转换等方面的内容。 标题:"java学习笔记.pdf" 描述:"想自学的小伙伴可以看俺" 标签:"Java" 部分...

    Java学习笔记及心得

    ### Java学习笔记及心得知识点详细解析 #### 标题:Java学习笔记及心得 #### 描述:Core Java 学习笔记及心得 pdf格式可打开。涵盖了java的基础入门知识,非常适合自学的及想深入学习理解的同学。 #### 标签:...

    Java学习笔记PPT

    这份"Java学习笔记PPT"是针对Java2版本的学习资源,旨在帮助初学者或有一定基础的开发者深入理解Java的核心概念和应用。 在Java学习的初期,掌握基本语法是至关重要的。Java的语法与C++有诸多相似之处,但更加强调...

    瑜琅java学习笔记

    ### 瑜琅Java学习笔记概览 瑜琅的Java学习笔记涵盖了Java的基础概念与核心特性,从起源到高级特性均有涉及。以下是对该学习笔记各部分的深入解析: #### 1. Java起源 ##### 1.1 发展背景 - Java的诞生源于Sun ...

    良葛格JAVA学习笔记

    【标题】"良葛格JAVA学习笔记"是一个专注于Java编程的学习资源,由知名教育者或博主"良葛格"编撰。这份学习笔记以其清晰易懂的讲解方式和详尽的内容,深受学习者喜爱,被强烈推荐。它旨在帮助初学者和有一定基础的...

    java学习笔记.doc

    Java 学习笔记 本资源摘要信息涵盖了 Java 编程语言的基础知识,着重于面向对象编程(OOP)的概念和实现。下面是该资源的详细知识点: 1. 面向对象编程(OOP)的基本概念: * 对象: everything is an object...

Global site tag (gtag.js) - Google Analytics