`

java读书笔记1(基本类型和运算符)

    博客分类:
  • java
 
阅读更多

java读书笔记1(基本类型和运算符)

一.程序启动:

1.java虚拟机默认是以指定类的main方法开始执行(eg:执行命令,java MyApp,这是虚拟机就从MyApp类的main方法开始执行).

2.main方法的规范:public static void main(string[] args){};(为什么必须是这样呢????)

二.java中的注释:多行注释不能嵌套的.

1.单行:

//我是注释

2.多行:

/*

 我是注释.

  我还是注释.

 */

3.能够被javadoc识别生成文档的注释(里面还可以包含一些标记):

/**

 我最牛逼.

 你行吗.

 */

三.  基本数据类型:没有无符号的,各种系统上都是一样的大小和范围.

1.整型:


  • byte:  1个字节  -128~127   (用于特定的场合,文件流和节约空间大小)
  • short:  2个字节  -32768~32767    (用于特定的场合,文件流和节约空间大小)
  • int:      4个字节  -2147483648~ 2147483647(20多亿) (直接常量的默认值,最常用的 如:45 其类型就int)
  • long:    8个字节 非常大  (直接常量加L后缀就是用这个long类型存储)


2.浮点型:不适合出现在禁止舍入误差的金融计算中.该用类库中的BigDecimal类


  • float:  4个字节  有效位6~7位. 1.4E-45~3.4028235E38 (直接常量 后缀f用这种类型存储)
  • double: 8个字节 有效位15位.  4.9E-324~1.7976931348623157E308(直接常量的默认存储类型)


3.字符型: 尽量少用,除非要操作代码单元.可以直接赋值字符也可以赋值代码点范围内的整数,可以参与运算,可以看成整数.


  •   char:2个字节.用UTF-16编码描述一个代码单元.(复杂) 表示的代码点的范围:0~65535  可以无损转换为int
  • 常见的转义字符:
  1. \\: 反斜杠
  2. \": 双引号
  3. \': 单引号
  4. \n:换行
  5. \r:回车

4.布尔型:不能和整形相互转换.用于逻辑判断.


  • boolean: 1个字节 false和true 

四.变量:包含三个概念(类型,名字,值) 可以理解变量是一个框子,框子的名称就是变量名,框子的大小和格式就类型,框子中装的就是值.


  • 类型:决定变量需要占的内存大小.(eg:int类型: 4个字节空间,引用类型: 存放堆地址的大小空间)
  • 名字:分配的内存的首地址(不知道这样理解对不对)
  • 值:内存中实际存储的内容.



  1. 1.变量名:大小写敏感,以字母 $ _开头,后面可是数字 字母 $ _的组合.不能是java中关键字.
  2. 2.变量的声明:int i;
  3. 3.变量的初始化:i=3;
  4. 4.一步到位:int i=3;


注意:java不区分变量的声明和定义.不像c/c++.


五.常量:不能改变其值.final表示只能被赋值一次,一旦赋值以后不能改变.


  1. 直接常量:3,"susu",3.45,'a';(呵呵呵,这个是如何也改变不了的)
  2. 对象常量:final int FLAG=3;final String NAME="rock";(每个对象有一个)
  3. 类常量:static final int FLAG=3;(只有一个)


六.运算符:


1.算数运算符:+ - * / %


  • 当/用于两个整数时表示整数的除法,否则表示浮点数除法.
  • 整数除0得到异常.浮点数除0得到无穷大或者NAN
  • 赋值运算符和算数运算符结合使用:+= -+ /= %= eg:i+=3;表示i=i+3;


2.自增自减运算符: ++   -- 只能用于整型 浮点型 字符型变量


  • n++,n--:执行完后将变量值加/减1
  • ++n,--n:执行之前将变量值加/减1


3.关系运算符:< > == != <= >= ;运算的结果是true或者false.


4.逻辑运算符:&& || !;二元运算符,参与运算的是boolean类型.其结果也是boolean类型.


  • 按照短路的方式运算.


5.三元运算符: boolean类型的表达式或者变量或者直接常量 ? true是执行的语句 : false是执行的语句;


6.位运算符: 对一个整数或者字符的位进行操作(运用屏蔽技术,以后研究).对于byte short char类型先提升为int再一位

                所以对于byte short char int的移位运算,右边的移位位数先要和32取模,long类型的移位右边的位数要

                先和64取模.所以int i=4;i<<1和i<<33是一样的结果.


  • 不按短路的方式  
  • &:与位运算 全1为1
  • |:全0为0
  • ^:相同为1
  • ~:0则1,1则0
  • 有点小复杂,以后研究.
  • <<:左移,
  • >>:右移 ,
  • >>>:


n>>3:n除以2的三次方.n>>3:就n乘以2的三次方.

注:整数编码方式:整数的编码(原码 反码 补码)和在内存中的存储方式.


七.类型转换:

1.自动转换:




 

 

  • 实线为安全的转换,虚线表示可能会有精度损失.
  • 自动的转换按如下的方式进行.
  • 如果有double类型,有则转换为double类型.
  • 否则判断是否有float类型,有则转换为float类型
  • 否则判断是否有long类型,有则转换为long
  • 否则转换成int类型.

 

2.强制类型转换(可能不安全)

如:int i=1234;

    byte j=(byte)i;

 

  • 但把浮点数强制转换为整数时会截断小数点后面的部分.如果相对浮点数进行舍入运算得到接近的整数可以用:int i=(int)Math.round(2.35);

 


八.数组:用来存储同一类型的集合.一旦创建了数组的大小就不能改变.

1.声明和定义:int[] a=new int[10];生命整形数组变量a,并且分配了10个int的存储空间.

2.初始化:

       先定义在初始化.

 

  • for(int i=0;i<a.length;i++){
  • a[i]=i+1;
  • }

 

    定义和初始化一起:int[] a={2,4,5,6,7};

注意:

 

  1. 匿名数组: new int[]{3,4,5,6};
  2. 数组操作相关的工具类:Arrays
  3. java中二维数组实际上是数组中存放的数组

 

 

 


















 

  • 大小: 10.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics