2018-05-08 第二天

一、Java的特点:

Java是简单的:

不再有#include 和#define 等预处理功能

不再有struct,union及typedef

不再有函数、

不再有指针、不再有多继承(但可以多重继承)

不再有goto

不再有操作符重载(Operatior Overloading)

不再有全局变量  取消自动类型转换,要求强制转换

不再有手动内存管理

Java是安全的:取消了指针,自动内存回收。

Java是完全面向对象的:继承、封装、多态

Java是健壮的:Java的强制类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证

java 最大的特点和优势:

java 跨平台。

 

二、Java及C语言的跨平台对比:

Java跨平台需要先编译再解释成不同平台可以执行的字节码文件,且一次编译多处执行;而C语言直接编译成与本地平台相关的二进制数据文件,对于不同平台需要多次编译,多次执行。

1.java的跨平台原理:

     jvm 的作用:

1:类加载

2:内存的管理。

3:解释给本地平台去执行字节码。

2018-05-08 第二天_第1张图片

2.C语言的跨平台原理:

2018-05-08 第二天_第2张图片

三、Hello World

public class HelloWorld{//HelloWorld是类的名字。要和文件的名字一致。

//类体

public static void main(String[] args){//应用程序的入口方法。俗称main方法,又叫主方法。格式是固定的。

//main方法体

 System.out.println("Hello World!");

}

}

public:被访问的权限。

class:一个特殊的单词。

HelloWorld:类的名字。HelloWorld 要和文件的名字一致。

{}:类体

public static void main(String[] args){}:java 应用程序的入口方法。俗称 main 方法,主方法。格式是固定的。

main方法体:

System.out.println("Hello World!");

在系统的标准输出设备上打印双引号内部的内容。原样输出字符串的内容。并输出一个换行符。

DOS运行过程:

编译:javac HelloWorld.java--->HelloWorld.class

解释:java HelloWorld

为何不添加.class?

因为程序会从包含入口的类开始执行。所以只写类的名字即可。

四、进制:

1:在java 程序中 表示一个具体的数的时候。可以使用几种进制来表示?

四种: 二进制、八进制、十进制、十六进制。

//练习java 中程序的进制的表示形式  

public class TestNumber{

// 入口方法 main

public static void main(String[] args){

//十进制表示10   将数字10 转换为数字对应的字符串,然后再打印。

System.out.println(10);

//二进制表示10  高位添加0b 表示这是一个二进制的数据  jdk 1.7增加的功能

System.out.println(0b1010);

//八进制  高位补0 代表是一个八进制的数据

System.out.println(012);

//十六进制  高位补0x

System.out.println(0xa);

}

}

2:二进制:

规则:逢二进一, 一个二进制位可以有2种不同的状态。[0-1]

在计算机学科中 ,一个二进制位一个0 或者是一个1 是 计算机的最小的存储单元。

一个二进制位称之为 1bit。 8bits 称之为一个字节 1byte。 可以有256(2^8)种状态。

0  1(一个二进制位的两种状态2^1)

00 01 10 11(两个二进制位的四种状态2^2)

000 001 010 011 100 101 110 111(三个二进制位的八种状态2^3)

3:十进制:用0-9 十个字符代表10种不同状态。多个十进制的位的组合来代表更多的不同的状态。

规则:逢十进一,一个十进制位可以有10种不同的表示形式[0-9].

4:八进制:

规则:逢八进一,一个八进制位表示的范围[0-7]

5:十六进制:

规则:逢十六进一 ,一个十六进制为表示的范围是[0-15],因必须只使用一个字符来表示 10~15。所以规定,使用[a-f][A-F]来代表 [10-15]

使用四种进制表示0-15

十进制    二进制    八进制    十六进制

    0            0             0             0

   1             1             1             1

   2            10           2            2

   3           11           3             3

  4            100          4              4

   5          101          5              5

   6         110          6              6

  7          111          7              7

   8        1000        10             8

   9        1001        11             9

  10      1010         12            A

  11       1011         13            B

  12      1100        14            C

  13       1101        15            D

  14       1110        16            E

  15        1111        17          F

6:进制转换:

    1:任何进制到 十进制的转换

123 = 1* 10^2 + 2*10^1 + 3*10^0 = 1*100 + 2 * 10 + 3 * 1 = 100 + 20 + 3 = 123;

0b101 = 1*2^2 + 0 * 2^1 + 1 * 2^0

0715 = 7*8^2+ 1*8^1 + 5 = 448+13 = 461;

0xa3 = 10 * 16^1 + 3*16^0 = 163

2: 十进制到其他进制的转换。

十进制到二进制:除二取余法。逆序输出。

十进制到八进制:除八取余数

十进制到十六进制:除十六取余数

3.八进制和二进制规则:一个八进制位表示成3个二进制位,3个二进制位合成一个八进制位

101010<--->52

61<--->110001

4.十六进制和二进制的转换

规则:一个十六进制位表示成4个二进制位,4个二进制位合成一个十六进制位

0xae3<--->101011100011

 

五、机器码转码:原码--反码--补码

问:一个整数在内存中是以什么样的形式表示的?

答:首先内存中的表现形式计算机肯定能直接识别。这种表现的形式 称之为 机器码。

用一个字节来表示 机器码。

计算机科学中规定:用字节的最高位来代表符号位,0 代表是正数 1 代表负数。

A、原码机器码的表示数据的规则:

最高位为符号位,低7位为数值位。

10: 0000 1010

-10:1000 1010

计算机并不是使用原码来表示数据的。

缺点:1:有+0  和 -0 之分。  0000 0000  1000 0000

2:如果考虑符号位参与运算,那么在设计cpu的时候,会增加cpu的设计的难度。

B、反码:

规则:如果是正数,那么原码和反码一致。

负数,在原码的基础上,符号位不变,其他的二进制位 1 变0 0 变 1 取反。

10:0000 1010 --反码--> 0000 1010

-10:1000 1010--反码--> 1111 0101

C、补码:

规则:如果是正数,那么补码和原码一致。 三码合一。负数,先求原码,然后求反码,最后+1.

-10: 1000 1010--反码--> 1111 0101 --求补-->(+1)  1111 0110

-1:1000 0001--->1111 1110 ---> 1111 1111

优点:

1:没有+0  和 -0 之分

0000 0000

1000 0000 --> 1111 1111 --(+1 )--> 1 0000 0000

2:计算机在使用补码计算的时候,并没有把符号位当作符号位来看待,而是当作了普通的数值位来使用,计算的规则和数值位的规则一致。cpu 的设计很简单了。

计算机科学中广泛了采用了补码的形式表示数据。

规则:补码的补码是原码。

1111 1111 ---> 1000 0000 --(+1)--> 1000 0001

六、标识符

写程序的目的:数据的运算和处理。

那么在程序中如何去访问要处理的数据呢?

通常的做法是,给要处理的数据所在的内存起一个名字。通过名字来访问数据所在的内存区域。而这个内存区域的名字在java中就称之为:标识符。

一个标识符对应着内存中的一块区域。

    1.基本的命名规范:

1:见名知意 通过标识符的名字要能体现标识符代表的内存区域的数据的性质。

举个栗子:年龄的数据:age  名字的数据:name

2:遵循驼峰命名法:多个单词构成标识符,单词的首字符要大写。

举个栗子:学生的年龄:studentAge。 stuAge。

3:尽量用英文单词命名。

不同种类的标识符的命名规范:

1.class 后的名字即类名:

首字符大写,遵循基本命名规范即可。

2.局部变量的命名规范:

首字符小写。

尽量不要使用单个字符作为变量名。

3.终态变量的命名规范:

所有字符全部大写,多个单词使用下划线分割。

2.标识符的命名规则:

1:首字符必须 26个英文字母的大小写形式、下划线、$。后面的字符多了[0-9]10个数字字符。

2:不能使用 java 语言中的关键字 (java 中具有特殊意义的单词符号) 。又称为保留字。

Public、class、static、void、final 等

3:标识符大小写敏感。即区分大小写。

4:标识符的长度没有限制。(不建议使用单个字符作为标识符,也不建议太长)。

5:不能使用 空格,# 等特殊字符。

例子:2name, a, nianling,你好,public,name.



2018-05-08 第二天_第3张图片

你可能感兴趣的:(2018-05-08 第二天)