【Java核心知识点】一、基础知识

相比C++,Java是一种更纯粹的面向对象语言,在Java中,(几乎)一切都是对象。

1.1 创建对象

通过标识符操纵对象,操纵的标识符是对象的引用(reference)。类似于遥控器(引用)操作空调(对象)。

  • 创建引用:
String s;
  • 对引用初始化:
String s = "hello java";
  • 通常用new操作符实现初始化:
String s = new String("hello java");


1.2 对象存储在哪?

基本知识:计算机中有以下五个地方可以存数据

  • 寄存器:

    • 速度最快的存储区。
    • 位于cpu内部,数量极其有限。
    • 寄存器会按需分配,你无法感知。
  • 栈:

    • 速度非常快(仅次于寄存器)。
    • 位于RAM内部。
    • 通常存储Java对象的引用。
  • 堆:

    • 通用的内存池,也位于RAM中。
    • 通常用于存储Java对象。
    • 好处:编译器无需知道存储的数据在堆里存储了多久,因此分配存储比较灵活。
  • 非RAM区:

    • 存活于程序之外,程序没有运行时也可以存在。
    • 如:流对象持久化对象
    • 有时候(嵌入式系统中)常量可能会存储到ROM区。


1.3 基本数据类型

基本数据类型需要被特殊对待。

  • 通过上文可知,一般情况下Java通过new将对象存放在里。
  • 但是,用new创建一个特别小的,简单的,常用的变量,放在堆里就影响了程序的效率。
  • 因此,对于这些基本的类型,可以不用new来创建,而是创建一个并非引用的“自动”变量,这些变量直接存储值,并存放在中。
  • 目的:提高程序的效率。

Java目前支持八种基本数据类型:

基本类型 大小 最小值 最大值 包装类类型
Boolean Boolean
char 16-bit Unicode 0 Unicode 2^16-1 Character
byte 8 bits -128 127 Byte
short 16 bits -2^15 2^15-1 Short
int 32bits -2^31 2^31-1 Integer
long 64 bits -2^63 2^63-1 Long
float 32 bits IEEE754 IEEE754 Float
double 64 bits IEEE754 IEEE754 Double
void Void

注:

1.4 创建新的数据类型:类

  • 创建类:
class People {
    /* 类主体 */
}
  • 创建对象:
People lwb = new People();
  • 字段,方法,参数(列表)和返回值 略
  • static关键字:方便在没有创建对象的情况下来进行调用(方法/变量)。
    • static修饰的方法 / 变量不需要依赖于对象来进行访问,只要类被加载了,就可通过类名访问。
    • static方法(静态方法)不依赖于任何对象就可以进行访问,因此对于静态方法是没有this的,因为它不依附于任何对象。因此,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。
    • static变量(静态变量)与非静态变量的区别:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化;非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。
    • static代码块。static块可以置于类中的任何地方,类中可以有多个static块。在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。


1.5 操作符

  • 注意优先级。
  • 简化符号:x = x + 1;可以写为x += 1;
  • 自动递增递减:print(i++)print(++i)
    • ++在前,先自增再赋值;
    • ++在后,先赋值再自增。
  • 关系操作符:
    • 基本数据类型的比较,使用==;
    • 引用类型的比较,使用equals()
  • 按位操作符:
    • &,或|,取反~,异或^
  • 移位操作符:
    • 左移:<<
    • 有符号右移>>, 符号为正,高位插0,符号为负,高位插1
    • 无符号右移>>>,无论正负,高位插0


1.6 控制程序执行流程

  • if-else, while, do-while, for, foreach
  • return:
    • 指定方法返回什么
    • 导致当前方法退出,并返回那个值
  • break和continue:
    • break表示退出当前循环,并且不执行循环剩下的所有语句(包括接下来所有未执行的循环)
    • continue表示退出当前循环,但是返回循环起始处执行下一次循环(如果存在)

1.7 初始化和清理

  • 构造器

    • 名称与类同名(意味着首字母大写)
    • 创建对象时new People(),先为对象分配存储空间,再调用构造器。=>确保了你在操作对象前,它就已经被初始化了
    • 构造器的重载(同名,但是参数列表不一样)
  • 对于有继承关系的子父类程序的初始化顺序:

    • 1.父类【静态成员】和【静态代码块】,按在代码中出现的顺序依次执行。
    • 2.子类【静态成员】和【静态代码块】,按在代码中出现的顺序依次执行。
    • 3.父类的【普通成员变量被普通成员方法赋值】和【普通代码块】,按在代码中出现的顺序依次执行。
    • 4.执行父类的构造方法。
    • 5.子类的【普通成员变量被普通成员方法赋值】和【普通代码块】,按在代码中出现的顺序依次执行。
    • 6.执行子类的构造方法。
  • this关键字

    • 只能在方法内部使用,表示“调用该方法的那个对象”的引用
    • 应用场景:需要明确指出当前对象的引用
    public class Money {
        int i = 0;
        Money increment() {
            i++;
            return this; // 返回Moeny对象的引用
        }
        void print() { Systemn.out.println("i = " + i); }
        public static void main(String[] args) {
            Money m = new Money();
            m.increment().increment().increment().print();
        }
    }
    
    • 将当前对象传递给其他方法也很有用
  • finalize()方法:

    • finalize()是Object的protected方法,子类可以覆盖该方法以实现资源清理工作,GC在回收对象之前调用该方法。
    • 一般不建议用finalize()完成“非内存资源”的清理工作,但建议用于:
      • ① 清理本地对象(通过JNI创建的对象);
      • ② 作为确保某些非内存资源(如Socket、文件等)释放的一个补充:在finalize方法中显式调用其他资源释放方法。


1.8 控制权限

  • 权限(隐私)等级从小到大:public,protected, 包访问权限(无关键词),private

  • 包访问权限:

    • 当前包的其他类都有访问权限,但是包以外的其他类都是private的。
  • 接口访问权限:public

    • 对每个人都是可用的
  • 继承访问权限:protected

    • 子类可访问
    • 同包下的其他类可访问
  • private:

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

推荐阅读更多精彩内容