java一般要点
1.String是引用类型.
2.char, short, byte在进行运算的时候会自动转换成int类型数据.,
3.数据A 异或同一个数两次,得到的还是A
4.java的for循环,可以在前面加一个标识.out:for(int i=0; i<10; i++),后面的break与continue可以后跟上标识符.直接作用于标识for的操作.
5.构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。构造代码块在创建对象时被调用,每次创建对象都会被调用,并且构造代码块的执行次序优先于类构造函数。
6.在类中显示调用其他参数的构造函数时,方式为this(参数),要放在函数的第一条语句中;
7.在java中,当JVM虚拟机加载.class文件,首先检查里面的函数,看是否有main函数,其次查看里面的静态成员,静态成员是先于对象创建(也许没创建).静态成员都是可以直接用类来调用的.与对象没有关系.所有对象都共享同一个静态成员
8.super一般代码父类的引用.可以访问父类的成员,也可以调用父类构造函数.
9.final关键字的用法:
1. final关键字修饰一个基本类型的变量时,该变量不能重新赋值,第一次的值为最终的。
2. fianl关键字修饰一个引用类型变量时,该变量不能重新指向新的对象。(可以通过传参的方式改变, 但是新函数的变量与原来的变量不一样,按C++的话来说.指向的地址一样.但变量本身的内存地址不一样)
3. final关键字修饰一个函数的时候,该函数不能被重写。
4. final关键字修饰一个类的时候,该类不能被继承。
10.接口要注意的事项 :
1. 接口是一个特殊的类。
2. 接口的成员变量默认的修饰符为: public static final 。那么也就是说接口中的成员变量都是常量。
3. 接口中 的方法都是抽象的方法,默认的修饰符为: public abstract。
4. 接口不能创建对象。
5. 接口是没有构造方法的。
6. 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有方法全部实现。
11多态要注意的细节:
1. 多态情况下,子父类存在同名的成员变量时,访问的是父类的成员变量。
2. 多态情况下,子父类存在同名的非静态的成员函数时,访问的是子类的成员函数。
3. 多态情况下,子父类存在同名的静态的成员函数时,访问的是父类的成员函数。
4. 多态情况下,不能访问子类特有的成员。
总结:多态情况下,子父类存在同名的成员时,访问的都是父类的成员,除了在同名非静态函数时才是访问子类的。
12.捕获异常,在JAVA中,如果没有异常处理,JVM虚拟机会自动创建一个异常类对象,并打印出异常信息,而我们所要做的,就是用cry-catch来捕获这个异常对象,捕获了之后,JVM将不再打印信息,由我们程序员自己处理
可以直接捕获Exception异常,相当于Exception e = new NullPointerException , 这样是成立的,异常将不再捕获
捕获处理要注意的细节:
1. 如果try块中代码出了异常经过了处理之后,那么try-catch块外面的代码可以正常执行。
2. 如果try块中出了异常的代码,那么在try块中出现异常代码后面的代码是不会执行了。
3. 一个try块后面是可以跟有多个catch块的,也就是一个try块可以捕获多种异常的类型。
4. 一个try块可以捕获多种异常的类型,但是捕获的异常类型必须从小到大进行捕获,否则编译报错。
13.抛出处理要注意的细节:
0.当在子类重写父类方法时,子类所抛出的异常必须要小于等于父类,父类没有抛出,那么子类就不能抛出(子类必须比父类善良)
1. 如果一个方法的内部抛出了一个异常 对象,那么必须要在方法上声明抛出。
2. 如果调用了一个声明抛出异常 的方法,那么调用者必须要处理异常。
3. 如果一个方法内部抛出了一个异常对象,那么throw语句后面的代码都不会再执行了(一个方法遇到了throw关键字,该方法也会马上停止执行的)。
4. 在一种情况下,只能抛出一种类型异常对象。
14.throw 与throws两个关键字:
1. throw关键字是用于方法内部的,throws是用于方法声声明上的。
2. throw关键字是用于方法内部抛出一个异常对象的,throws关键字是用于在方法声明上声明抛出异常类型的。
3. throw关键字后面只能有一个异常对象,throws后面一次可以声明抛出多种类型的 异常。
15.System.gc();建议马上启动JVM的垃圾回收器
16.多线程 继续一个Thread类,重写run方法,然后调用对象的start方法
17.线程锁,任何一个对象都可以做为线程锁,是因为其内部都有一个状态state,1为开,0为关,当使用synchronized(对象)时,JVM会设置被包含代码块的state的值.从而达到同部
1. 任意的一个对象都可以做为锁对象。
2. 在同步代码块中调用了sleep方法并不是释放锁对象的。
3. 只有真正存在线程安全问题的时候才使用同步代码块,否则会降低效率的。
4. 多线程操作的锁 对象必须 是唯一共享 的。否则无效。
18.同步函数 : 同步函数就是使用synchronized修饰一个函数。
同步函数要注意的事项 :
1. 如果是一个非静态的同步函数的锁 对象是this对象,如果是静态的同步函数的锁 对象是当前函数所属的类的字节码文件(class对象)。
2. 同步函数的锁对象是固定的,不能由你来指定 的。
19自定义线程的创建方式
方式二:
1. 自定义一个类实现Runnable接口。
2. 实现Runnable接口 的run方法,把自定义线程的任务定义在run方法上。
3. 创建Runnable实现类对象。
4. 创建Thread类 的对象,并且把Runnable实现类的对象作为实参传递。
5. 调用Thread对象 的start方法开启一个线程。
20.wait与notify方法要注意的事项:
1. wait方法与notify方法是属于Object对象 的。
2. wait方法与notify方法必须要在同步代码块或者是同步函数中才能 使用。
3. wait方法与notify方法必需要由锁对象调用。
21.线程的停止:
1. 停止一个线程 我们一般都会通过一个变量去控制的。
2. 如果需要停止一个处于等待状态下的线程,那么我们需要通过变量配合notify方法或者interrupt()来使用。
22.join()
1.一个线程如果执行join语句,那么就有新的线程加入,执行该语句的线程必须要让步给新加入的线程先完成任务,然后才能继续执行。
23集合比数组的优势:
1. 集合可以存储任意类型的对象数据,数组只能存储同一种数据类型 的数据。
2. 集合的长度是会发生变化的,数组的长度是固定的。
-------| Collection 单例集合的跟接口。
----------| List 如果是实现了List接口的集合类,具备的特点: 有序,可重复。
----------| Set 如果是实现了Set接口的集合类,具备特点: 无序,不可重复。
24ListIterator特有的方法:
添加:
hasPrevious() 判断是否存在上一个元素。
previous() 当前指针先向上移动一个单位,然后再取出当前指针指向的元素。
next(); 先取出当前指针指向的元素,然后指针向下移动一个单位。
add(E e) 把当前有元素插入到当前指针指向的位置上。
set(E e) 替换迭代器最后一次返回的元素。
25迭代器的方法:
hasNext() 问是否有元素可遍历。如果有元素可以遍历,返回true,否则返回false 。
next() 获取元素...
remove() 移除迭代器最后一次返回 的元素。
26.HashSet添加元素的原理:
往HashSet添加元素的时候,首先HashSet会调用元素的hashCOde方法得到元素的哈希码值,然后会经过一系列运算
就可以算出该元素在哈希表中的存储位置/
情况1:如果算出该元素的位置目前没有任何元素存储,那么该元素可以直接存储
情况2: 如果算出该元素的位置目前已经存有其他的元素,那么还会调用元素的equals方法与该位置的元素再比较一次。
如果equals方法返回的是false,那么该元素允许存储,如果euqlas方法返回的是true,那么该元素被视为重复元素,不允许存储。
27.treeSet要注意的事项:
1. 往TreeSet添加元素的时候,如果元素本身具备了自然顺序的特性,那么就按照元素自然顺序的特性进行排序存储。
2. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,那么该元素所属的类必须要实现Comparable接口,把元素
的比较规则定义在compareTo(T o)方法上。
3. 如果比较元素的时候,compareTo方法返回 的是0,那么该元素就被视为重复元素,不允许添加.(注意:TreeSet与HashCode、equals方法是没有任何关系。)
4. 往TreeSet添加元素的时候, 如果元素本身没有具备自然顺序 的特性,而元素所属的类也没有实现Comparable接口,那么必须要在创建TreeSet的时候传入一个
比较器。
5. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,而元素所属的类已经实现了Comparable接口, 在创建TreeSet对象的时候也传入了比较器
那么是以比较器的比较规则优先使用。
28.泛型类要注意的事项:
1. 在类上自定义泛型的具体数据类型是在使用该类的时候创建对象时候确定的。
2. 如果一个类在类上已经声明了自定义泛型,如果使用该类创建对象 的时候没有指定 泛型的具体数据类型,那么默认为Object类型
3.在类上自定义泛型不能作用于静态的方法,如果静态的方法需要使用自定义泛型,那么需要在方法上自己声明使用。
29.HashSet添加元素的原理:
往HashSet添加元素的时候,首先HashSet会调用元素的hashCOde方法得到元素的哈希码值,然后会经过一系列运算
就可以算出该元素在哈希表中的存储位置/
情况1:如果算出该元素的位置目前没有任何元素存储,那么该元素可以直接存储
情况2: 如果算出该元素的位置目前已经存有其他的元素,那么还会调用元素的equals方法与该位置的元素再比较一次。
如果equals方法返回的是false,那么该元素允许存储,如果euqlas方法返回的是true,那么该元素被视为重复元素,不允许存储。
------------------| TreeSet 底层是使用了红黑树(二叉树)数据结构实现的, 特点:会对元素进行排序存储。
30.TreeSet要注意的事项:
1. 往TreeSet添加元素的时候,如果元素本身具备自然顺序的特性,那么会根据元素自然顺序的特性进行排序存储。
2. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,那么元素所属的类必须要实现Comparable接口,把元素的比较规则定义
在CompareTo方法上。
3. 往TreeSet添加元素的时候,如果元素本身不具备自然顺序的特性,而且元素所属的类没有实现COmparable接口,那么必须要在创建
TreeSet对象的时候传入比较器。
4. 如果比较的方法(CompareTo 或者Compare )返回的是0的时候,那么该元素就被视为重复元素,不允许添加。
31.枚举类的定义格式:
enum 类名{
//枚举值
}
枚举要注意的细节:
1. 枚举类也是一个特殊的类。
2. 枚举值默认的修饰符是public static final。
3. 枚举值就是是枚举值所属的类的类型, 然后枚举值是指向了本类的对象的。
4. 枚举类的构造方法默认的修饰符是private的。
5. 枚举类可以定义自己的成员变量与成员函数。
6. 枚举类可以自定义构造函数,但是构造函数的修饰符必须是private。
7. 枚举类可以存在抽象 的方法,但是枚举值必须要实现抽象 的方法。
8. 枚举值必须要位置枚举类 的第一个语句。
java一般要点的更多相关文章
- Java 编程要点之并发(Concurrency)详解
计算机用户想当然地认为他们的系统在一个时间可以做多件事.他们认为,他们可以工作在一个字处理器,而其他应用程序在下载文件,管理打印队列和音频流.即使是单一的应用程序通常也是被期望在一个时间来做多件事.例 ...
- 第43节:Java学前要点
Java学前要点 01 学习Java,有人推荐去培训,有人说没用,其实有钱的,不知道如何学,或者逼不得已去的就可以,也有人自己为了不花这些钱,而选择自学,我觉得也行. 现在大部分人学东西要学的好,都是 ...
- Essential Java.《Java 编程要点》
Essential Java.<Java 编程要点> Essential Java, is a book about the Essentials of Java Programming. ...
- java基础要点
Java语言是现在比较常用的编程语言,因为Java语言可以编写桌用程序,也可以编写web程序,还能编写嵌入式程序.这是由于相比脚本语言,Java 的运行速度要快.而对于底层语言,Java与平台无关,可 ...
- Java 性能要点:自动装箱/ 拆箱 (Autoboxing / Unboxing)
[编者按]本文作者为 Ali Kemal TASCI,最早于2016年4月9日发布于DZONE社区.文章主要介绍通过改进 Java 1.5 就已存在的骨灰级特性大幅度提高应用性能. 本文系 OneAP ...
- java复习要点(一)------- java语言的特点、java的工作原理、配置环境变量、java命令的使用
一.java语言的特点: (1)简单并面向对象 (2)鲁棒并安全: java语言在编译及运行程序时,都要进行严格的检查,防止不匹配问题的发生.如果引用一个非法类型,或执行一个非法类型操作,java减肥 ...
- Java面向对象要点
面向对象: 一.基本概念 类与对象的基本概念: 1.void类型是不需要返回值的,其他类型全部都需要返回值. public void tell(){ ...
- java笔试要点(java多线程)
一.线程的生命周期及五种基本状态 关于Java中线程的生命周期,首先看一下下面这张较为经典的图: 上图中基本上囊括了Java中多线程各重要知识点.掌握了上图中的各知识点,Java中的多线程也就基本上掌 ...
- java笔试要点(java.sql包)
提供JAVA存取数据库能力的包是 ( ) A: java.sql B: java.awt C: java.lang D: java.swing 解析: A,java.sql包提供Java存取数据库能力 ...
随机推荐
- [daily][archlinux][pacman] local database 损坏
下午,开心的看着dpdk的文档,做做各种小实验. 后台正常yaourt -Syu,三个多G的下载,我总是过很久才update一次. 然后KDE窗口各种异常,我知道又在开始更x相关的东西了.可是因为X异 ...
- PHP正则表达式;数组:for()遍历、 foreach ()遍历、each()list()组合遍历;指针遍历
正则表达式: 1.定界符号 任何字符,一般用 // 2. 模式修正符i 写在定界符外面后面,可不区分大小写 3.preg_replace($reg,&q ...
- sqlserver 简单的事物用法
SELECT * FROM Interface_UserPort BEGIN TRY BEGIN TRAN Tran_2012_12_25 ,) --raiserror 50005N'抛出错误' CO ...
- hadoop-2.7.3 在windows环境下安装(无需Cygwin)
http://blog.csdn.net/kokjuis/article/details/53537029
- php--在apache上配制rewrite重写
配置步骤: 第一步:找到apache的配置文件httpd.conf(文件在conf目录下) 第二步:你首先必须得让服务器支持mod_rewrite,如果你使用的是虚拟主机,请事先询问你的主机提供商. ...
- 在express项目中有效组织和使用mongoose
平凡之路 1.创建express项目 express mongooseExpress 2.最简express var express = require("express"); v ...
- 【C++】C++求vector中的最大最小值
利用algorithm库里的max_element和min_element可以得到vector的最大最小值,配合distance函数可以得到最大值的位置 #include<vector> ...
- (leetcode)Minimum Size Subarray Sum
Given an array of n positive integers and a positive integer s, find the minimal length of a subarra ...
- 文明3地图之二-大n型地图
存档文件:http://files.cnblogs.com/files/xiandedanteng/civ3bigN20160214.rar 地图: 简介: 这份地图几乎没有岛屿,整块大陆都连在一起像 ...
- 3、DOM操作
一.认识DOM 文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法.DOM 将HTML文档呈现为带有元素.属性和文本的树结构(节点树). 先来看看下面 ...