您的位置:首页 > 编程语言 > Java开发

JAVA编程基础(三)

2015-09-24 19:35 399 查看
标识符(给包、类、方法、变量、常量、接口等起名时使用的字符序列)

标识符: 凡是自己命名的地方都叫标识符。 如: 包名、类名、接口名、方法名、变量名、常量名等等

关键字: 被Java赋予了特殊含义的单词



注意:不要刻意去背,后面会慢慢介绍每个关键字的用法。

命名规则(必须遵守,否则编译不能通过):

①以字母(采用Unicode字符集)、下划线、$ 开头

②其余部分可以是:字母(采用Unicode字符集)、下划线、$、数字

③其中不能包含空格

④不能使用关键字和保留字,但是可以包含关键字和保留字

⑤Java严格区分大小写,长度无限制

注意:在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。

命名规范(可以不遵++守,但是会受到鄙视)

包名: 所有字母都小写。 如: xxxyyyzzz

类名、接口名: 若出现多个单词,每个单词首字母大写。如: XxxYyyZzz

方法名、变量名: 若出现多个单词,第一个单词的首字母小写,其余单词首字母大写。如: xxxYyyZzz

常量名: 所有字母都大写,若出现多个单词,之间以"_"分隔。 如: XXX_YYY_ZZZ

public class Welcome{

public static void main(String[] args){

int $abc = 3;

int $ = 5;

int _123=5;

//int 123abc = 6; //标识符不能以数字开头

//int abc# = 3; //标识符不能包含除了字母、数字、下划线、$之外的其他字符

//int class = 3;

int 北京 = 10; //java内部采用了Unicode字符集,universal--通用的意思,包含中文、英文等等地球上所有语言的所有字符。

//Unicode采用的是2个字节表示一个字符

String str = "刘";

System.out.println(str.getBytes().length);//2

char c = 'c';

}

Unicode和GBK_各种字符集的关系



变量:用于保存数据

变量的概念:

①在内存中开辟一块空间

②该空间有类型(数据类型)有名称(变量名)



变量是通过使用变量名来访问这块区域的,该区域的数据可以在同一类型范围内不断变化。

内存了解,先混个眼熟,成员变量和局部变量所属作用范围的那块内存区域称作栈帧。

变量的格式: 数据类型 变量名 = 值;

1、局部变量

定义在方法内或语句块内。 从属于方法或语句块。

使用之前,必须要手动初始化!

//声明一个变量

数据类型 变量名; 如: int var;

//为变量赋值

变量名 = 值; 如: var = 10;

//声明一个变量并赋值

如: int var = 20;

2、成员变量(实例变量 field)

定义在类里面、方法外面。从属于对象。

如果我们没有手动初始化成员变量,系统会自动初始化。初始化的规则如下:

基本数据类型:

byte short int ---> 初始值为 0

long ---> 初始值为 0L

float ----> 初始值为 0.0F

double ----> 初始值为 0.0

char ----> 初始值为 '\u0000' -----> '\u0000' 是空的意思 什么都没有的意思

boolean ----> 初始值为 false

引用数据类型: -----> null

|--- 类(class)

|--- 接口(interface)

|--- 数组([])

|--- 枚举类型(enum)

|--- 注解类型(Annotation)

3、静态变量(类变量)

定义在类里面、方法外面、使用static修饰。从属于类。

如果我们没有手动初始化静态变量,系统会自动初始化。初始化规则同成员变量。

变量的注意:

①作用域:变量作用在所属的那对 {} 内

②先声明,后使用

③同一个作用范围内,变量名不能重复

变量的数据类型

注意:后面文章中出现的“^”代表的是次方哈~

基本数据类型(8种):

整型: byte(8位,1个字节,范围: -128~127) short(16位,2个字节,范围: -2^15~2^15-1) int(32位,4个字节,范围: -2^31~2^31-1,也就是正负12亿)-默认类型 long(64位,4个字节,范围: -2^63~2^63-1)

浮点型: float(32位) double(64位)-默认类型

字符型 : char(16位,2个字节,范围: 2^16-1,可以把0到65535之间的整数转型为char) ---- 采用Unicode的16位编码方式进行编码(ASCII、中文、日文、特殊字符等等)

布尔型: boolean

引用数据类型:引用了堆里面的一个内存地址,我们一般用4个字节表示。

|--- 类(class) ----------------- String 用于存储字符串

|--- 接口(interface)

|--- 数组([])

|--- 枚举类型(enum)

|--- 注解类型(Annotation)

声明变量的时候注意:

①当声明 long 型变量时,值后需要加 L 或 l ;

如: long l1 = 12345l; long l2 = 235457L; long l = 465;//自动升级

②当声明 float 型变量时,值后必须加 F 或 f 如: float f1 = 15.6F;

③当声明 double 型变量时,值后可以加 D 或 d

④当声明 char 型变量,值必须使用 单引号。 如: char c = 'A';

⑤双引号引起来的都作为 String 类型的值

基本数据类型中存放的是变量的值

引用数据类型中存放的是对象的内存地址

public class TestType {

String name;//实例变量,成员变量,属性----------方法外部,类的内部定义的

static int num = 10;//静态变量

public static void main(String[] args){

int n;//方法或语句块内,定义的才是局部变量,需要先赋值才能被使用

//int m = n+3;

int x,y,z;

final int C=34;//常量一般要使用大写来定义,最终变量只能被赋值一次,不可改变 ,

//C = 35;//error

final int MAX_SPEED = 120;//多个单词用下划线

// static int F;

int a = 10;//十进制

int a2 = 010;//八进制,逢8进1,以0开头

int a3 = 0xf;//十六进制,逢16进1,以0x开头

// byte b = 200;

int a5 = 10;//如果什么都不写,10默认就是int

long a6 = 200;

byte b2 = 100; //如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型。

long a7 = 11123213232L;//使用大写L,不要用小写l表示长整形

long l = 3;//尽量不要用l作为变量

long l2 = l+3; //L问题

//JDK7新特性_二进制整数_下划线分隔符

int num1 = 0b0000_0000_0000_0000_0000_0000_0000_0011;//0b开头表示二进制数,与内存中的格式一样表示

int num2 = 1_2312_3131;

int num3 = 0b0010;

}

public void ss(){

//static int F;//方法里面不可以静态的变量

}

}

public class TestFloatDataType {

public static void main(String[] args){

//double d = 3.14; //浮点数常量默认类型是double。

//float f = 6.28F;//如果想转为浮点float,可以在后面加上f或F

double d2 = 314e-2; //采用科学计数法的写法

System.out.println(d2);

/*

浮点数存在舍入误差,不能精确表示。比如[0,1]之间的小数就有无穷多个

浮点数在内存中的表示是另外一种形式

float 占4个字节 大于 int 占4个字节 也大于 Long 占8个字节 ,因为整数能精确表示,

double 占8个字节 大于 Long 占8个字节 ,因为长整数能精确表示

如果需要进行不产生舍入误差的精确计算,需要使用 BigDecimal,如银行系统就需要精确计算

BigDecimal ------------>它表示超大的小数 double 占8个字节

BigInteger ------------>它表示超大的整数 Long 占8个字节

*/

float f = 0.1f;

double d = 1.0/10;//浮点数的计算有误差,有可能是0.9999999.。。。。

System.out.println(f);

System.out.println(d);

System.out.println(f==d); //false 最好避免比较中使用浮点数

}

}

public class TestCharDataType {

public static void main(String[] args){

/*

char c1 = 'a';

char c2 = '国'; //unicode 2: 0-65535

char c3 = '\n';

System.out.print(c1);

System.out.print(c3);

System.out.print(c2);

*/

/**

* 字符占2个字节,允许有65535个字符,运算时直接当作整数来运算

*/

/*

char c4 = 'a';

int i = c4 + 2;

System.out.println(i);//99 , 可以查看标准ascii码表

char c5 = (char)i; //强制转型,可以把0到65535之间的整数转型为char

System.out.println(c5);

//循环打印a-z

for(int j=0;j<26;j++){

char temp = (char)(c4+j);

System.out.print(temp);

}

//java里面的字符串,是定义成:String类了。

String str = "abcdefghijklmnopqrstuvwxyz";

System.out.println("\n"+str);

*/

/**

* boolean类型 只占1位,不是1个字节

*/

boolean b = false; //false

if(b){ //不推荐if(b==true),容易丢掉"="号。如:if(b=true) 这样容易出问题

System.out.println("true");

}

}

}

变量的运算



数据类型的转换:

自动类型转换: 小容量转大容量。(系统自动完成)

①byte short char 三者之间不进行运算,都将自动提升成 int 之后再运算

char c = 'A';

char c2 = 'B';

int i = c + c2;

short s = 15;

int i2= c + s;

②byte short char ---> int ---> long ---> float ---> double

long l = 12346;

float f2 = 12.667F;

float ff = l + f2;

③boolean 不参与运算的

④任何基本数据类型与String类型使用 "+" 连接符运算,都将自动串接成String类型

强制类型转换:大容量转小容量。 需要使用 强转符: (需要转换的类型)


注意:可能损失精度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: