Java开发每日复盘2018_0514

作者: 07e819eca0df | 来源:发表于2018-05-14 17:48 被阅读59次

今天主要跟大家分享3个部分:

一、「Java的核心机制」

二、「Java命名规范」

三、「Java数据类型相关」

下面我们来一个一个的说:

「Java核心机制」

Java是一种强制面向对象的解释型语言(OOP -- Object Oriented Programming)。

即,不支持面向过程(Procedure Oriented Programming)。

其类与类之间,只支持单继承。(Class)(extends)

但是接口与接口之间,支持多继承。(Interface)(extends)

类与接口之间有一套实现机制(implement)

Java的核心机制,主要分为2个部分:

一、Java虚拟机(JVM -- Java Virtal Machine)

二、垃圾回收机制(GC -- Garbage Collection)

其中JVM的出现,使得Java拥有了一处编译,到处执行的特性。(Write once, Run Anywhere)

简单的说,JVM是一台介于Java和各个不同的操作系统(MacOS、Windows、Linux等)之间的,起到兼容各个不同操作系统使得Java可以在其上运行作用的,虚拟的电脑,即Java虚拟机--JVM--Java Virtal Machine。

而垃圾回收机制GC,则是使得在Java开发中,不需要过多的关注内存释放的问题,也不需要手动释放当前不需要但占用着内存的变量。

当GC检测到内存不足时,它会自己自动释放当前不需要使用但占用着内存的变量。

就像是,不需要的东西被装进了一个垃圾桶,当垃圾桶差不多装满时,GC会自动开着垃圾车过来,把这个垃圾桶清空(自动清理释放内存空间)。

好处是,开发过程中不用分心考虑内存问题,可以专注于代码逻辑实现,同时可以防止手动释放内存时的错误操作,把还需要使用的变量给释放掉了,产生异常错误。

Java语言有三大特点:

一、面向对象:

【1】基本概念:类、对象。

【2】三大特性:封装、继承、多态。

二、健壮性:

吸收了C/C++语言的有点,同时剔除了影响健壮性的操作(如:指针操作、开辟内存与释放内存等),使得Java的健壮性大大提升。

三、跨平台性:

如上JVM所述。


「Java命名规范」

【1】包名:

全部小写。

如:aaabbbccc

【2】类名、接口名:

大驼峰命名法。

如:AaaBbbCcc

【3】变量名、方法名:

小驼峰命名法。

如:aaaBbbCcc

【4】常量名:

全部打写,及用下划线分割。

如:AAA_BBB_CCC

「Java数据类型」

【1】「Java里的八大基本数据类型(原始数据类型)」

byte

short int long

float double

char

boolean

【2】「变量按数据类型分类」

数据类型分为:

一、基本数据类型:

    1、数值型

        1、整数类型

            byte

            short

            int

            long

        2、浮点类型

            float

            double

    2、字符型

        char

    3、布尔型

        boolean

二、引用数据类型:

    1、类

        class(字符串在这里)

    2、接口

        interface

    3、数组

        []

一与二的区别:

「基本数据类型」存放于内存的「栈」中,「引用数据类型」存放于内存的「堆」中(其地址(指针)存放于内存的栈中)。

补充:

内存中的存储主要分为4块区域:栈、堆、静态区域、常量池。

其中:

栈:存放「基础数据类型」的变量(地址和值),「引用数据类型」的变量的地址(指针)。

堆:存放「引用数据类型」的变量的内容(值)。

静态区域:存放静态变量(用static修饰的变量)。

常量池:存放字符串常量。

【3】「自动类型转换」

1> Example 1:

int a = 60;

double b = 20.99

double c = a+b 

(a已经发生了自动类型转换,即 a= 60.0)

int c = a+b 

(编译报错)

(目标类型大于原类型,会发生自动类型转换,反之则不会。

如上例:

double类型大于int类型,所以int类型会自动转换为double类型,而double类型则不会自动转换为int类型)

2> Example 2:

short a = 50;

short b = 20;

long c =(i+j);

short d =(i+j); 

(这么写会报错,因为short + short = int,而int类型大于short类型,所以int类型不会自动转换为short类型)

3> Example 3:

char a = 'A';

String b = "abcd";

String result = a + b;

(a已经发生了自动类型转换, 由char自动转换为String)

4> 数据类型大小排序:(由大到小)

double

float

long

int

short(char与short同级)

byte

5>  byte/short/char

这三种数据类型之间不会互相转换。在计算时会先自动转换成int,然后再开始计算。

(如上例2:「short + short = int」)

6> 任何类型 + 字符串String类型

都会自动转换成Sting类型。

如:

int a = 6;

String b = "hello";

String c = b + a;

字符串String类型会这样,但字符Char类型是不会的。

如:

int整型 + 字符Char类型,字符char会先转换成int(对应ASCII码),再计算。

String a = "Hi" + 'a' + 2;(a = "Hia2")

String b = 'a' + 2 + "Hi";(b = "99Hi")

7> 布尔值类型Boolean

不能被转换成其他类型。

【4】「强制类型转换」

是「自动类型转换」的逆过程,会丢失精度。

如:

 Random ramdom = new Random();

 int i =(int)(ramdom.nextDouble()*10);

【5】「null值」

null值可以赋值给任意「引用数据类型」(类、接口、数组,等),赋值后,表示这个引用类型变量中保存的地址为空。

因为String属于引用类型,所以可以赋值为null


【6】「String字符串类型」

String a = new String("abcd");

("abcd"存放在「堆」中)

String a = "abcd";

("abcd"存放在「常量池」中)

(可参考上方所述的「内存存储分区」)

【7】「补码」

当你第一次接触「补码」时(补码:该数据的反码+1),会不会觉得这东西有什么用?反码的作用好理解,数据取反时可以用,但补码是在反码的基础上,加1,这个有什么用啊?

其实它的作用很简单,也很直接,就是:计算机底层是以数据的补码来存储的。(二进制)

-- zeroOS·复盘于2018/5/14

「zeroOS·简书号」

相关文章

  • Java开发每日复盘2018_0514

    今天主要跟大家分享3个部分: 一、「Java的核心机制」 二、「Java命名规范」 三、「Java数据类型相关」 ...

  • 复盘日记2021-08-19

    今日复盘 林洪【2021】每日复盘 2021.8.19 周四 地点:昆明 工作/销售 安心购开发1家 续费沟通1家...

  • 复盘日记2021-08-18

    今日复盘 林洪【2021】每日复盘 2021.8.18周三 地点:昆明 工作/销售 12.8K(安心购开发1家) ...

  • 复盘日记2021-08-17

    今日复盘 林洪【2021】每日复盘 2021.8.17周二 地点:昆明 工作/销售 10.7K(安心购开发1家) ...

  • 2018-05-06——复盘

    每日复盘 ——今天开始每日复盘,并且公开。 每日复盘可以理解,那为什么公开? 第一、做一个实验(小...

  • 2018.1.13#人生效率手册温柔暴击#(Day61)-妮妮R

    早起6:00 每日复盘: 每周复盘

  • 2018-04-16每日复盘

    20180416每日复盘 每日复盘:昨日两大目标1. 周复盘+日复盘2. gre阅读训练(作业+录播+笔记+速度训...

  • 复盘,你应该这样做

    01 尽早复盘 复盘应当及时、高效,每日复盘每日做,活动复盘完成时做,这样可以确保头脑的记忆还是鲜活的、丰富的,并...

  • 每日复盘Day254

    米果果教育张滢 9月19复盘 【每日目标】 1.每日瑜伽 ✅ 2.每日早起✅ 3.每日复盘✅ 【每日成就】 【每日...

  • 每日复盘Day277

    米果果教育张滢 10月24复盘 【每日目标】 1.每日瑜伽 ✅ 2.每日早起 3.每日复盘✅ 【每日成就】 【每日...

网友评论

    本文标题:Java开发每日复盘2018_0514

    本文链接:https://www.haomeiwen.com/subject/ctpjdftx.html