java学习笔记

基础语法:

①java源文件名必须和public类名相同,一个java文件中只能有一个public类

②每个类都有构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名。一个类可以有多个构造方法。

③接口和抽象类:java通过接口实现多重继承,而一个类只能继承一个类(包括抽象类)或者使用内部类可以实现多继承。Java8中接口也可以有方法体。

变量类型:

①成员变量和类变量:类变量有static修饰符,修改类变量的值会令new出来的任何一个实例中具有相同的值,而不同实例对象间的成员变量相互独立。

②局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

基本数据类型:

① Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

② 引用类型: 强引用 软引用 弱引用 虚引用

引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象(数组),指向对象的变量是引用变量。

③ 对于==,如果作用于基本数据类型的变量,则直接比较其存储的“值”是否相等;如果作用于引用类型的变量(  例如string类型),则比较的是所指向的对象的地址

④ 对于equals方法(注意:equals方法不能作用于基本数据类型的变量),如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

修饰符:

① final(表示常量) 变量能被显式地初始化并且只能初始化一次。被声明为 final 的对象的引用不能指向不同的对象,但是 final对象里的数据可以被改变。

② 一个类不能同时被 abstract 和 final 修饰。如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误。

抽象方法不能被声明成 final 和 static。

任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类。

③ 静态变量也被称为类变量。局部变量不能被声明为 static 变量。

④ synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符。(保证原子性)

⑤ volatile 修饰的成员变量在每次被线程访问时,都强制从公共内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。(不保证原子性)

循环:

① do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

Number&Math类:

① Integer b = Integer.valueOf("444",16);  // 使用 16 进制

② 产生随机数有两种方法,一种是内置Random对象:  Random rand=new Random(); int j=rand.nextInt(100);

// 这里是一个方法的重载,参数的内容是指定范围

一种是Math类的random方法:int i=(int)(Math.random()*100);

//生成0-100的随机数

String类:

① String类是不可改变的解析,因此当对字符串进行修改的时候,需要使用StringBuffer和StringBuilder类。和String类不同的是,StringBuffer和 StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。

② StringBuilder类在Java 5中被提出,它和StringBuffer之间的最大不同在于StringBuilder的方法不是线程安全的(不能同步访问)。

Collection接口类:

① Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。

② Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>

③ List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。

④ ArrayList只能通过get(int i)方法获取索引 i 的值,不能通过x[i](数组的方法)方法获取

Stream、File、IO:

PS:按照ANSI编码标准,标点符号、数字、大小写字母都占一个字节,汉字占2个字节。按照UNICODE标准所有字    符都占2个字节。在Java当中字符是采用Unicode编码标准的。

① File类创建文件

② FileInputStream\FileOutputStream负责从file对象读取原始字节流

③ 如果要以指定的字符编码方式(字符流)写入或读取文件,就需要InputStreamReader

④ 上面只能读\写一个字符,读\写多个字符需要BufferedReader

⑤ Scanner是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器

异常:

(1)如果调用者发现这个方法抛出异常,那么他必须

①捕获处理这个异常(try...catch...finally...)

②抛出这个异常(使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。)

(2)声明自定义异常类

①如果希望写一个检查性异常类,则需要继承 Exception 类。

②如果你想写一个运行时异常类,那么需要继承 RuntimeException 类。

③一个异常类和其它任何类一样,包含有变量和方法。

继承:

(1)子类的构造过程中必须调用父类的构造方法

(2)子类可在自己的构造方法中使用super()来调用父类的构造方法

①使用this来调用子类的另外的构造方法,调用的代码只能出现在该构造方法内部的第一行可执行代码,      另外的构造方法必定使用super()              调用父类构造方法

②如果调用super必须写在子类构造方法的第一行

(3)如果子类的构造方法中没有显示的调用父类的构造方法,则系统默认的调用父类的无参的构造方法。

(4)如果子类的构造方法中既没有显示调用父类的构造方法,而父类中又没有无参的构造方法,则编译出错。

(5)this用法:

①用于区分成员变量和局部变量同名的时候,在成员变量名前面带上this.用于区分

②表示当前引用this的对象名。

③在一个类中如果构造函数间有重复,为增加程序的复用性,利用this调用重复的构造函数

重写(Override)和重载(Overload):

① 方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现,重写是父类与子类之间多态性的一种表现,重载是一类中多态性的一种表现。

② 重写是在子类里面,方法名字相同,参数相同。返回类型相同。异常可以减少或删除。访问修饰符只可以降低限制。

③ 重载是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。异常可以修改。访问修饰符可以修改。

④ 虚方法:编译的时候检查父类是否有该方法,而运行的时候则是调用特定对象(子类)的方法。要想调用父类中被重写的方法,则必须使用关键字super。

抽象类:

① 抽象类不能被实例化。

② 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

③ 构造方法、类方法(用static修饰的方法)不能声明为抽象方法。

④ 抽象类的子类必须重写抽象父类中的所有抽象方法,除非该子类也是抽象类。

接口:

① 接口不能用于实例化对象。

② 接口没有构造方法。

③ 接口中所有的方法必须是抽象方法。

④ 接口中的变量会被隐式的指定为 public static/final 变量

⑤ 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法)。

⑥ 接口允许多重继承,但是要注意,继承的多个接口可能包含相同名字方法,注意返回类型要一致,不然编译报错(原因:名字、参数相同,不符合重载规范)

Java多线程编程

① Java 线程的优先级是一个整数,其取值范围是1(Thread.MIN_PRIORITY )- 10(Thread.MAX_PRIORITY )。  具有较高优先级的线程对程序更重要,并且应该在低优先级的线程之前分配处理器资源。但是,线程优先级不能保证线程执行的顺序,而且非常依赖于平台。

② Thread.currentThread().getName()是获得调用这个方法的线程的名字(用户可通过setName()方法定义线程名字);this.getName()也是获取当前线程对象的名字,但是必须在thread子类中调用,表示当前thread实例。如果没有自定义线程名字,系统自动以线程编号命名(格式:Thread-X)。

例子:

③ Thread.join(),是用来指定当前主线程等待其他线程执行完毕后,再来继续执行Thread.join()后面的代码。

④ Thread.join(long millis),当前主线程等待该线程终止的时间最长为 millis 毫秒,超过时间没完成则跳回  主线程,执行join()后面的代码。

匿名内部类

1、使用匿名内部类时,我们必须是继承一个类或者实现一个接口,但是两者不可兼得,同时也只能继承一个类或者  实现一个接口。

2、匿名内部类中是不能定义构造函数的。(初始化匿名内部类使用构造代码块)

3、匿名内部类中不能存在任何的静态成员变量和静态方法。

4、匿名内部类为局部内部类,所以局部内部类的所有限制同样对匿名内部类生效。

5、匿名内部类不能是抽象的,它必须要实现继承的类或者实现的接口的所有抽象方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 1.十进制-->二进制:十进制转为二进制主要是对十进制数进行除2运算 2.二进制-->十进制:二进制乘以2的过程 ...
    晨星资源阅读 384评论 0 0
  • 1.软件开发概述 软件生命周期软件生命周期:软件的产生到报废的整个过程软件生命周期内有:问题定义,可行性分析,总体...
    寒桥阅读 593评论 0 0
  • 面向对象主要针对面向过程。 面向过程的基本单元是函数。 什么是对象:EVERYTHING IS OBJECT(万物...
    sinpi阅读 1,041评论 0 4
  • 基础篇 final 修饰符——修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的...
    Darkmoss阅读 401评论 0 0
  • (一)Java部分 1、列举出JAVA中6个比较常用的包【天威诚信面试题】 【参考答案】 java.lang;ja...
    独云阅读 7,066评论 0 62