黑马程序员--Java基础--02-基础语法1

来源:互联网 发布:网络励志名言 编辑:程序博客网 时间:2024/05/01 12:43

<span style="font-size:14px;">------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------</span>

一、关键字和标识符

1.关键字

1).概念:被Java语言赋予特定含义的单词。

2).关键字特点:组成关键字的字母全部小写。

3).关键字注意事项:main是一个被虚拟机识别的特殊标识符,不是

关键字;goto和const作为保留字存在,目前并不使用;类似Notepad++这样的高级记事本,针对关键字有特殊的颜色标记,非常直观。

常用关键字如下图:


   

                                                                                                                                                                                   

2.标识符

1).概念:就是给类,接口,方法,变量等起名字时使用的字符序列,由英文大小写字母、数字字符、$和_组成。

2).命名规则:不能以数字开头、不能是Java中的关键字、不能使用特殊符号(_和$可以使用)、区分大小写。

3).命名规范:

◆包名 -> com.itcast.XXX> 公司域名反写 + 包说明

  格式: “.”分隔

  包名小写

◆类名 ----> 所有单词首字母大写

◆变量和方法命名 -----> 驼峰式命名,第一个单词首字母小写,其余单词首字母大写

◆常量:static修饰的常量

A、所有字母大写

B、多个单词组成,单词间使用"_" ----- MAX_VALUE

◆最重要:见名知意

二、进制以及进制转换

学习完进制能使我们对计算机底层的运算有直观的理解。

1.进制:一种计数的方式。

A、计算机存储数据,使用的是许多二进制位存储,每个二进制位是一个Bit

B、计算机中将8个bit作为最小的存储单元,称之为字节 ---- byte。     

2.进制的的种类及由来  

1).十进制:人有十个手指

2).二进制:电信号来的 ---- 开关

3).八进制、十六进制的由来:由于二进制表示不方便,所以产生八进制和十六进制。

A、八进制将三个二进制位合成一位

B、十六进制将四个二进制位合成一位,10、11、12、13、14、15分别用a、b、c、d、e、f表示。

3、原码、反码和补码

数值编码:在计算机内部表示二进制数的方法称为数值编码。

正数:源码反码补码都一样,都是一个数的二进制数的表示,如:10的原、反、补码都是0000 1010(按一个字节计算的).

负数:原码 ---- 标志位是1,计数位和正数一样

    反码 ---- 计数位取反,1变0,0变1

    补码 ---- 反码基础之上 +1

注:计算机底层的运算都是基于补码进行的。

4.进制的转换

1).十进制转二进制:用十进制数除以二进制数得商取余数,然后在用得到的商除以2一直到商为0为止,把得到的所有余数取反序。

如十进制数10转二进制:

10/2=5---余0

5/2=2----余1------------>余数取反序即1010.

2/2=1----余0

1/2=0----余1

2).二进制转十进制

A、计算每个bit,然后相加

B、每个bit的数字 = bit上值 * 2(N - 1) ---- (N从右向左数的位数)

计算负数的十进制:

A、减1

B、反码

C、计算出十进制数字

D、取正数的负数形式

3).二进制转八、十六进制

00 | 001 | 010 --> 12 二进制转八:将每三位二进制数转换成十进制变成八进制的一位,从右到左依次放在八进制对应的位上。

          1    2

0000 | 1010 --> a 二进制转十六进制:将每四位二进制数转换成十进制变成八进制的一位,从右到左依次放在十六进制对应的位上。

            a

4).八、十六进制转二进制

按照二进制转八、十六进制的方式反向操作。

5).十进制转八、十六进制

原理同十进制转二进制。

6).八、十六进制转十进制

原理同二进制转十进制。

7).八、十六进制间的相互转换

都需先转成十进制,再通过十进制进行转换。

5、打印对应进制数字 

语法:

1).直接声明数字,在Java中默认是十进制

2).要表示其他进制数字,可以给数字加标记

   八进制 ---->数字前加 0

   十六进制 -->数字前加 0X ----> X 大小写无所谓

3).JDK1.7之前不能表示二进制

   JDK1.7以及以后:

   二进制 ----> 数字前加0b

4).注意事项:取值必须在当前进制的范围内,否则不能通过编译

三、常量和变量

1、变量

变量:数据的载体、载体上的数据可变(类似于:超市的价格标签,标签上的价格可变)。

程序中变量的体现: A、由若干bit组成的一块内存空间;    B、改变bit上的标记。

2.变量的创建: A、声明格式:数据类型 变量名;    B、给变量赋值:变量名 = 变量值;//将变量值赋值给变量名(所指向的内存)

 上述两步可以合为一步,声明的同时赋值:数据类型 变量名 = 变量值。

变量使用的注意:方法内的变量(局部变量)如果之声明,不初始化,那么不可用。

3.常量:不可变的数据。有些数据一旦创建,逻辑上就不可以改变 : 圆周率、e 

A、使用final修饰 ---- 为内存更改设置权限。

B、字面值常量 ------- 字面值:别名,这块内存只能通过值称呼、常量:这块内存无法调用,无法修改。

C、在java中,如果使用整数,没显示的标记数据类型,那么默认分配四个字节。

4、变量类型 

使用不同的数据类型目的:考虑取值范围、资源节约按照需求,进行分析,对数据灵活的进行空间分配。在Java中,数据类型被固定了,分为两大类:A、基本数据类型B、引用类型。

1).八大基本数据类型(取值范围)

   整型:

byte  ----- 1个字节8bit -----最小值:-2^7 = -128  最大值:2^7 - 1 = 127

short ----- 2个字节16bit ----最小值:-2^15= -32768 最大值:2^15 - 1 = 32767

int ------- 4个字节32bit ---- 最小值:-2^31 最大值:2^31-1

long ------ 8个字节64bit ---- 最小值:-2^63 最大值:2^63-1

浮点型: ---- 涉及到自然指数和存储结构,取值范围比较大

float ----- 4个字节32bit

double ---- 8个字节64bit

 字符型:

char ------ 2个字节16bit(无符号 --- 没有负数)1111 1111 1111 1111 ----- 65535

 布尔:

boolean --- true/false --- 标志位 1个bit ---- 一般都是一个byte

2).赋值操作

<span style="font-family:Microsoft YaHei;font-size:14px;">/**为基本数据类型赋值A、为基本类型赋值,变量值必须在取值范围之内B、如果变量值是整型,默认int型(四个字节) --- 为什么?   出于受用以及内存大小的考虑隐式转换 ---- 1、整型字面值常量转换成其他类型      2、浮点型不存在隐式转换为了方便查看输出语句,使用字符串拼接打印信息 "XXX" + 数据字符串拼接数据是由使用限制的,运算符时会讲。   */class Var02{public static void main(String[] args){//byte num1 = 128;//可能损失精度byte num1 = 1;System.out.println(num1);short num2 = 123;System.out.println(num2);int num3 = 1234;System.out.println(num3);//程序报错---为什么?//默认整型四个字节,但是数字太大//解决:使用标记 ---- 后缀L或l//告知编译器:不要按默认的四个字节分配,而是分配八个字节//变量值在int取值范围之内不用特殊声明//建议:以后只要声明long类型数据,那么变量值就 + Llong num4 = 100000000000L;System.out.println(num4);/*在Java中浮点型,默认是double类型1、声明float数据时,double转float可能损失精度2、不存在隐式转换解决:做标记 --- + F/f 告知编译器按4个字节分配*/float num5 = 5.0F;//将double ---> floatSystem.out.println("num5 = " + num5);double num6 = 6.0;System.out.println("num6 = " + num6);float num7 = 5;//将int ---> floatSystem.out.println("num7 = " + num7);/**char类型数据的存储 ---- 1、底层bit2、无符号 --- 没有标志位3、char本质就是数字4、char的数字和字符之间有映射关系97 --- a98 --- b 编码表查找对应关系不同的编码表对应关系不同*/char c1 = 'a';System.out.println("c1 = " + c1);char c2 = '中';System.out.println("c2 = " + c2);char c3 = 97;System.out.println("c3 = " + c3);boolean b1 = true;boolean b2 = false;System.out.println("b1 = " + b1);System.out.println("b2 = " + b2);}}</span>

3).精度排序 ---- 取值范围排序 ----- A、内存大小有关 B、存储结构有关

整型:byte < short < int < long;

浮点型:float < double

综合排序:

byte < short < int < long < float < double

char  ---- [0,2^16-1]

short ---- [-2^15, 2^15-1]

char和short无法排序

char和byte无法排序

char和int ---- char完全属于int 

4).强制类型转换

数据类型转换:

A、低精度转高精度绝对安全 ---- 向上转型

B、高转低可能出问题 ----- 向下转型

5).基本数据类型运算-----隐式转换

 两种隐式转换 - A、 当参与运算的数据 <= int 时,结果自动转为 int

       B、 当参与运算的数据 > int时,运算结果自动转型为参与运算的最高精度的数据类型

------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------





0 0
原创粉丝点击