Java学习笔记_day2


title: Java学习笔记_day2
time: 2017-03-14 11:36:33
categories: Java
tags: Java基础知识

关键字

组成关键字的字母全部小写

goto和const作为保留字存在,目前并不使用

常见关键字

native表示实现不在本文件中jni

strictfp表示的是精确浮点数

transient不能再被序列化;volatile同一时刻只能有哟个线程进行访问

标识符

就是给类,接口,方法,变量variable等起名字时使用的字符序列

组成规则

l  英文大小写字母

l  数字字符

l  $和_

注意事项

l  不能以数字开头

l  不能是Java中的关键字

l  区分大小写

命名规则

  1. 包(其实就是文件夹,用于解决相同类名问题)

全部是小写

单级包:haotianyi

多级包:cn.hty

  1. 类或者接口

一个单词:首字母大写

多个单词:每个大单词首字母大写     ShowAllAge

  1. 方法和变量

一个单词:单词的首字母小写  age

多个单词:从第二个单词开始,单词的首字母大写   showAllAge

  1. 常量

一个单词:每个字母全部大写

多个单词:每个字母全部大写,单词之间用下划线隔开

Java中注释

l  单行注释

格式: //注释文字

l  多行注释

格式: /*  注释文字  */

l  文档注释

格式:/** 注释文字 */

多行注释不可以嵌套使用,单行才可以嵌套使用

文档注释主要是被javadoc工具解析成一个说明书

先写注释在写代码

注释的作用

解释说明程序,提高程序的阅读性

可以帮助我们排错

常量constant

在程序执行的过程中其值不可以发生改变

Java中常量分类

  1. 字面值常量

字符串常量  用双引号括起来的内容

整数常量       所有整数

12,23

小数常量       所有小数

12.34,56.78

字符常量       用单引号括起来的内容

‘a’,’A’,’0’

布尔常量       较为特有,只有true和false

空常量      null(数组部分讲解)

  1. 自定义常量

不同进制的数据组成

二进制 

由0,1组成。以0b开头

八进制 

由0,1,…7组成。以0开头

十进制 

由0,1,…9组成。整数默认是十进制的

十六进制   

由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头 

不同进制之间的转换

l  十进制到其他进制

用原始数据除以要转换的进制数,直到被除数是0为止,然后从下到上得到余数

l  其他进制到十进制

用每位的数字在乘以进制的不同次幂

有符号数据表示法

在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算都是采用补码进行的。

原码

就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。第一位表示符号位

反码

正数的反码与其原码相同(正数的原反补都一样);负数的反码是对其原码逐位取反,但符号位除外。

补码

正数的补码与其原码相同;负数的补码是在其反码的末位加1。

变量variable

在程序执行的过程中,在某个范围内其值可以发生改变的量

数据类型

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间

数据的范围

数据注意

一个字节8个比特

整数默认:int  (所有的byte、short之间的计算都会先转换成in类型,然后再计算) 浮点数默认:double

如要声明一个常量为 float 型,则需在数字后面加 f 或 F

声明long型常量可以后加‘ l ’或‘ L ’

变量注意事项

作用域 

变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。

初始化值

没有初始化值不能直接使用

在一行上建议只定义一个变量

可以定义多个,但是不建议

数据类型的转换

l  默认转换

byte,short,char—int—long

byte,short,char相互之间转换,他们参与运算首先转换为int类型

l  强制转换

目标类型 变量名=(目标类型)(被转换的数据);

byte,short在定义的时候,他们接收的其实是一个int类型的值。

这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。

思考题

  1. byte b =130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
  2. 字符参与运算

           是查找ASCII里面的值

           'a'    97

           'A'    65

           '0'    48

  1. 下面两种方式有区别吗?

           float f1 = 12.345f;

           float f2 = (float)12.345;

下面的程序有问题吗,如果有,在哪里呢?

           byte b1 = 3;

           byte b2 = 4;

           byte b3 = b1 + b2;

           byte b4 = 3 + 4;

 

 

参考:

1用原码反码补码来计算

       我们要想知道结果是什么,就应该知道是如何进行计算的。

       而我们又知道计算机中数据的运算都是补码进行的。

       而要得到补码,首先要计算出数据的二进制。

      

       A:获取130这个数据的二进制。

           00000000 0000000000000000 10000010

           这是130的原码,也是反码,还是补码。

       B:做截取操作,截成byte类型的了。

           10000010

           这个结果是补码。

       C:已知补码求原码。

                  符号位     数值位

           补码:  1          0000010          

           反码:  1          0000001          

           原码:  1          1111110

2是f1就是float类型的数据但是f2是int去掉前面三个字节截取而得

3两个byte类型的数据相加直接转换成int类型,由低级向高级装换可以隐士转换,高级向低级转换一定要显示,是b3错误,换成short一样错误。

常量,先把结果计算出来,然后看是否在byte的范围内,如果在就不报错。

复习题

1:在定义Long或者Float类型变量的时候,要加L或者f。

 整数默认是int类型,浮点数默认是double。

 

 byte,short在定义的时候,他们接收的其实是一个int类型的值,只不过再次做了一个数据的截取操作

 这个是自己做了一个数据检测的,如果不再它们的范围内,就报错。

 

2:byte值的问题

    byteb1 = 127;

    byteb2 = (byte)128; //-128

    byteb3 = (byte)129; //-127

    byteb4 = (byte)130; //-126

   

    byte的范围:-128 ~ 127

   

    128:10000000

    -128:10000000 (这里的1即是符号位,也是数值位)

   

3:数据类型转换之默认转换

   ( byte,short,char)--> int -- > long -- > float -- > double

    long:8个字节

    float:4个字节

   

    A:它们底层的存储结构不同。

    B:float表示的数据范围比long的范围要大

       long:2^63-1

       float:3.410^38 > 210^38 > 28^38 =22^3^38 = 2*2^114 > 2^63-1

 

4:Java语言中的字符char可以存储一个中文汉字吗?为什么呢?

    可以。因为java语言中的字符占用两个字节。

        Java语言采用的是Unicode编码。


It's time for you to begin thinking out of the box