1.2Java一些规范,常量变量及类型转换

1.代码书写规则:
关键字:必须小写

标识符:
        由26个英文字母大小写,数字0~9,符号_  $组成
        (符号一般用于公司统一规范名称)
        不能以数字开头
        不能使用关键字(用关键字名字的大写形式也不建议)

2.代码书写规范:
类名首字母一般大写,后面每个单词首字母也大写(驼峰命名法)

3.注释
单行注释 //
多行注释 /* */
多行注释不能嵌套多行注释
注释的另一个作用:调试缩小代码错误范围
注释存在源文件中,但在编译的字节码class文件中注释不会被编译进去。

java特有注释:
文档注释
/**
文档注释
*/

注释应用:
开发 或者 面试上机:要写注释
学习当中:第一步写多行注释,需求,思路,步骤:

/*
需求:练习一个hello world程序。

思路(通用的,不分语言):
1.定义一个类。因为java程序都定义在类中,类的形式其实就是一个字节码文件的最终体现
2. 定义一个主函数。为了让类可以独立运行
3. 输出语句

步骤(根据具体语言,用不同的表现形式写出来):
1.class关键字来完成类的定义,起一个阅读性强的类名
2.主函数:public static void main(String[]  agrs) 这是固定格式,JVM认识
3.使用输出语句:System.out.println("Hello Java!");

代码仅仅是思想的一种体现形式
*/

4.常量,变量:
(1)基本常量(6种):

1.整数常量(4个字节)
2.小数常量
3.布尔(boolean)常量:true false
4.字符常量:将一个数字字母或者符号 用单引号 ' ' 标识
5.字符串常量:将一个或多个字符用双引号 " " 标识
6.null常量:只有一个数值:null

""       空字符串
null: 空值(串都给扔了,啥也没有)

整数:表现形式

二进制(Bin,Binary system):0121
八进制(Oct,Octal number system):0~781,用0开头
十进制(Dec,Decimal system):0~9101
十六进制(Hex,Hexadecimal ):0~9,A~F   满161,用0x开头

数据最小单元:byte 字节(一个字节等于8个bit位(二进制位))
              1byte = 8bit
         计算机中:1k = 1024
    生活中(U盘等):1k = 1000
0101 1101
三个一组 转换成对应十进制数,形成的数为八进制数
四个一组 转换成对应十进制数,形成的数为十六进制数

负数的二进制形式:(二进制最高位是1)
是这个数的正数的二进制取反,加1。

(2)变量:
内存中的一个存储区域
该区域有自己的名字(变量名)和类型(数据类型)
该区域的数据可以在同一类型范围内不断变化

作用范围:
一对 { } 之内

格式:
数据类型 变量名 = 初始化值;
定义变量时必须进行初始化。

细分:

数据类型:
    基本数据类型:
        数值型:
               整数类型(byte(1),short(2),int(4)默认,long(8))
               浮点类型(单精度float(4),双精度double(8)默认)
        字符型:char(2),可以放中文,一个中文占两个字节
        布尔型:boolean

    引用数据类型:
        类:class
        数组:[]
        接口:interface

3.强制类型转换中 数据溢出计算:
正向溢出:byte b = (byte)128; b=128 - 2^8 = -128
反向溢出:short s = (short)-32770; s=2^16 -32770= 32766

有一种情况不需要强转,会默认进行无条件强转:
当操作数都是默认类型时,而且单个运算数值都没有超过类型范围,但是运算后的结果超出类型范围时,编译检查不会报错,结果会自动强转,造成精度丢失,如:
int x = 0, y = 2147483647;  //y = Integer.MAX_VALUE;
x = y + 1;   // x = - 2147483648

4.类型转换:
不同类型的数据是不能一起运算的。
不过 数值型数据 存在特殊情况,通过类型转换来运算:

自动类型转换(隐式):以占用内存大的类型为主,自动提升。
特别的:
如果操作数有long,结果就是long;
如果操作数有float,结果就是float;
如果操作数有double,结果就是double。

int x = 3;
byte b =5;
x = x + b;   //正确

b = b + 4;   //左边为byte类型,右边为int类型,大内寸转小内存,可能会丢失精度,此时需要强制类型转换。

强制类型转换(显示):慎用,可能丢失精度。
b = (byte)(b + 4)

5.字符类型运算:
字符型(2个字节)和 int型(4个字节)运算: 字符型数据自动提升为 int型(对应的ASCII编码),然后进行运算。

中文编码表 GB2312  国标码  6000多汉字
                  GBK   国标扩展码 (目前通用) 2万多汉字
                  GBK18030
常用ASCII码:
A  65
a  97
0  48

JDK内置unicode国际标准码表,包括ASCII等。

面试题:
byte b = 4;  //编译器自动判断int型4是否在byte范围内,如果在则进行一次默认强转。
byte b1 = 3;
byte b2 = 7;
b = b1 + b2;   //编译出现丢失精度错误,b1和b2是非默认型变量,不能进行检查判断后面的byte型值和是否在byte范围内,以及后续的默认强转赋值操作。

//另一种情况不会报错,即当b1,b2是默认型变量(int,double...):
int b = 4; 
int b1 = 3;
int b2 = 7;
b = b1 + b2;   //和如果超出了int范围,默认强转,不报错。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章