02章 基础语法(命名规则,变量,数据类型)

来源:互联网 发布:临沂拓普网络 编辑:程序博客网 时间:2024/06/05 09:06

标识符:可以自己取名的,且符规则的地方。

命名规则:

①由字母、下划线_、美元$或数字组成;

②由字母、下划线_、美元$开头;

③大小写敏感,长度无限制,不可以和关键字重名;

④最好“见名知义”;

⑤goto、const未使用但作为关键字保留(C语言)。


本质上,变量是内存上的一小块区域,使用变量名访问,故在使用前要先声明,并赋值。


Java程序的运行过程:

程序——>装载入内存——>找到main()方法开始执行——>分四块区域存放不同的代码

分别是:

①code segment 代码区(存放程序)

②data segment 数据区(存放静态变量以及字符串常量)

③stack 栈 (存放局部变量)

④heap 堆 (存放new 出来的东西)


Java变量的分类:

局部变量:方法/语句块内部定义的变量(如main()方法)

成员变量:类体内且方法体外定义的变量

【注释】由于Java面向对象,故变量声明必须在class内完成,并没有像C语言中全局变量那样的概念。


public class HelloWorld {int j = 9;public static void main(String args[]){int i = 8;System.out.println("HelloWorld!");}}

根据上述定义,j是成员变量,i则是局部变量。

(通俗点来说,凡是在大括号内声明的变量,出了大括号就没有人认识他了)


Java数据类型划分

Java中数据类型分为基本数据类型和引用数据类型,基本数据类型分为:数值型、字符型、布尔型,其中数值型又细分为整数类型(包括:byte、short、int、long)和浮点类型(包括:float、double),另一方面,引用数据类型分为类、接口以及数组。

【注释】

①区分不同数据类型的方法很多,例如根据内存占用大小或内存布局均可实现;

②boolean类型只允许取值true或者false,不可用0或者非0整数代替(C语言可以)。


public static void main(String args[]){boolean flag ;flag = true ;if(flag){//do something}}

char类型用于表示字符,Java字符采用Unicode编码,每个字符占用2个字节,1个字节等于8位,例如:char c1 = '\u0061'(十六进制,附:Unicode是全球统一编码);0061 = 0000|0000|0110|0001。

Java语言中允许使用转义字符'\'来将其后的字符转变为其他含义,例如:char c2 = '\n'   //换行符

原因:因为使用Unicode编码可以表示世界上的绝大多数文字。


整数类型的byte、short、int、long用占用内存空间大小来区分:

byte        1字节(8位)        -128~127

short       2字节                    -2^15~2^15-1

int           4字节                    -2^31~2^31-1

long        8字节                    -2^63~2^62-1

【注释】①之所以减一是因为需要1位表示数的正负性;

              ②C为什么不可移植?一个重要的原因就在于C的变量所占内存大小不同,而Java都一样,所以Java的代码是可移植的。


Java语言整型变量常量的三种表现形式:

①十进制,eg.12,-314,0;

②八进制,要求以0开头,eg.012;

③十六进制,要求以0x开头,eg.0x12;


Java的整型变量默认为int,想声明long型可在后面加上“l”或者“L”

eg.int i1 = 600 ;                   //正确

     int i2 = 888888888L;     //必须加上L否则报错,因为超出范围


浮点类型有float和double两种,两种表现形式:

①十进制,eg.3.14,314.0,314;

②科学计数法,eg.3.14e2=3.14×10^2;


Java中浮点型常量默认为double,想声明为float类型,后面加“f”或者“F”

eg.double d = 12345.6        //正确

     float f = 12.3f                 //必须加f

同整型常量一样,以占用内存空间大小来区分:

float        4字节        -3.403E38~3.403E38

double    8字节        -1.798E308~1.798E308

【注释】浮点数有一定误差,float型的误差在第8位(精度在7位),double型的误差在第16位(精度在15位)。


基础数据类型的转换

boolean型不可以转换成其他类型,而整型、浮点型、字符型在混合运算中可以相互转换,原则如下:

①容量小——>容量大(自动转换),顺序为:

byte、short、char——>int——>long——float——>double

byte、short、char三者之间不会相互转换,三者计算时先统一转换为int。

②容量大——>容量小(强制转换),必须使用强制转换符(可能导致精度降低或者溢出)

eg.long a = 123 ;        int——>long               正确

     float a = 12.3 ;       double——>float        错误

③多种类型混合运算时,系统首先自动将所有数据转为容量最大的数据类型,再进行计算;

④实数默认double;

⑤整数默认int;

附上demo一枚:

public class TestConvert {public static void main(String args[]){int i1 = 123;int i2 = 456;//转换为double类型运算double d1 = (i1+i2)*1.2;//加强制转换符float f1 = (float)((i1+i2)*1.2);byte b1 = 1;byte b2 = 2;//转换为int型运算,加强制转换符byte b3 = (byte)(b1+b2);double d2 = 1e200;//会导致溢出float f2 = (float)d2;System.out.println(f2);//必须加ffloat f3 = 1.23f;long l1 = 123;//必须加llong l2 = 30000000000l;//转换为float型运算float f = l1+l2+f3;//强制转换舍去小数部分(此处非四舍五入)long l = (long)f;}}

输出结果:Infinity(无限大)

解释:因为对于float来说,d2=1e200就意味着无限大。

2 0
原创粉丝点击