Java语言基础 1:关键字、标识符、进制转换、变量、常量、强制类型转换
PS:(1)线上API文档:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
(2)点击“索引”,然后command+f,做全文搜索。
1、关键字
(1)定义:关键字是被Java语言赋予特定含义的单词,组成关键字的单词都是小写字母。
(2)注意:
- goto和const 是保留字,目前并不使用。
- 类似于Notepad++这样的高级编辑器都对关键字都颜色标记。
2、标识符
(1)标识符就是给类、接口、方法、变量等起名字时使用的字符序列。
(2)组成规则:英文大小写字母、数字字符0-9、美元符号 $、下划线 _ 组成。
(3)注意事项:标识符 不能以数字开头、不能是Java中的关键字、Java语言严格区分大小写。
(4)标识符的常见命名规则:
- 标识符要见名知意。学生类的定义:class Student { }
- 包:其实就是文件夹,用于把相同的类名进行区分。包名全部小写。
单级包:cmm
多级包:cn.itcast
意思是指: cn
itcast
- 类或者接口:一个单词:单词的首字母必须大写。举例:Student,Dog 多个单词:每个单词的首字母必须大写。举例:HelloWorld,StudentName
- 方法或者变量:一个单词:单词的首字母小写。举例:main,age 多个单词:从第二个单词开始,每个单词的首字母大写。 举例:studentAge,showAllNames()
- 常量:一个单词:全部大写。举例:PI 多个单词:每隔单词都大写,用下划线 _ 隔开。举例:STUDENDT_MAX_AGE
3、注释
(1)用于解释说明程序的文字。解释说明程序,提高程序的阅读性,帮助调试程序。
给别人看的,不是给计算机看的。
(2)Java中注释的分类和格式:
单行注释:// (单行注释可以嵌套使用)
多行注释:/* */ (多行注释不能嵌套使用)
文档注释:/** */
main方法是主方法,是程序的入口,被Java虚拟机JVM调用。
public static void main(String [ ] args )
写代码之前,先写注释。需求——分析——实现。
4、常量
(1)在Java程序执行过程中,值 不可以发生改变。
(2)分类:字面值常量、自定义常量。
(3)字符串常量:用双引号括起来。“hello” “HelloWorld”
整数常量:所有的整数。 100 200
小数常量:所有小数。10.23 1.11
字符常量:单引号括起来的内容。'a' '0' 'ab'(错误的举例)
布尔常量:逻辑判断使用的。true false
空常量:null
class ConstDemo {
public static void main(String[] args) {
System.out.println("hello");
System.out.println(100);
System.out.println(100.22);
System.out.println('A');
//有问题的AB
System.out.println('AB');
System.out.println('1');
System.out.println(true);
}
}
5、进制:1byte=8bit 1k=1024byte 1m=1024k 1g=1024m 1t=1024g
(1)Java针对整数常量提供了4种表现形式:二进制、八进制、十进制、十六进制。
(2)进制:就是进位制,是人们规定的一种进位方法。 对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制是逢八进一,十进制是逢十进一,十六进制是逢十六进一。
(3)不同进制的数据组成:
1)二进制 :由0,1组成。以0b开头。
2)八进制 :由0,1,…7组成。以0开头。
3)十进制 :由0,1,…9组成。整数默认是十进制的。
4)十六进制:由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头。
(4)十进制和二进制的快速转换:8421码。(位权展开法,辗转相除法、拆分组合法)
(5)二进制和八进制,十六进制如何转换?以十进制作为桥梁。二进制到八进制:3位组合。100110。二进制到十六进制:4位组合。100110
6、有符号数据表示法:符号位+数值位。
在计算机内,有符号数有3种表示法:原码、反码和补码。所有数据的运算在内存中都是采用补码进行的。
(1)原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
(2)反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
(3)补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1。
总结:正数的原码、反码、补码,三码相同。负数的反码是其原码按位取反,负数的补码是其反码+1。
7、变量的概述和格式:
(1)从本质上讲,变量其实是内存中的一小块区域,使用变量名来访问这块区域,因此,每一个变量使用前必须要先申请(声明),然后必须进行赋值(填充内容),才能使用。
(2)数据类型 变量名 = 初始化值;
(3)为什么要定义变量呢? 用来不断的存放同一类型的常量,并可以重复使用。
(4)Java 是强语言数据类型。针对每一种数据都定义了明确的数据类型。
数据类型分类:
1)基本数据类型(4类8种):整数类型、浮点类型、字符型、布尔型
2)引用数据类型(类、接口、数组)
- 整数类型:占用内存字节数
byte:1字节 -128~127
short:2字节 -65536~65535
int:4字节(整数默认的类型int)
long:8字节(后缀使用L或者l 标识,建议使用 L)
- 浮点类型:
float:4字节(单精度浮点数使用f或者F结尾,建议使用 F)
double:8字节(浮点数默认的类型double)
- 字符型: char:2字节
- 布尔型: boolean:1字节
class DataTypeDemo {
public static void main(String[] args) {
//定义一个字节变量
byte b=10;
System.out.println(10);
System.out.println(b);
//定义一个短整型变量
short s=10;
System.out.println(s);
//定义一个整型变量
int i=100;
System.out.println(i);
//定义一个长整型变量
long j=1000000000000L;
System.out.println(j);
//定义一个浮点数变量
float f=12.3455F;
System.out.println(f);
double d=12.3455;
System.out.println(d);
//定义一个字符变量
char ch='s';
System.out.println(ch);
//定义一个布尔变量
boolean flag=true;
System.out.println(flag);
}
}
8、使用变量的注意事项:
(1)作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
(2)初始化值:没有初始化值不能直接使用。在一行上建议只定义一个变量,可以定义多个,但是不建议!
9、数据的默认类型转换(隐士类型转换):对于基本数据类型的数据计算,运算式中的小类型数据首先会转为大类型数据,然后在参与运算(类型提升!)。
面试题1:long 是8字节,float是4字节,但为什么可以由long提升为float类型呢?
答:它们的底层结构不同,并且float 表示的数据范围要比long 的范围大很多。
面试题2:Java 语言中的字符char 可以存储一个中文汉字么,为什么?
答:可以。因为java 语言字符中的占用2个字节。java语言采用的是Unicode编码。
面试题3:哪句会编译失败呢?
byte b1=3, b=4, b;
b=b1+b2; //编译失败。b1 和b2是byte类型,做运算时,首先会被提升为int 类型,再进行运算,最后再把int // 类型的结果赋值给b,而b 是byte类型的,所以出现错误。
b=3+4; //没问题。常量相加,先把结果计算出来,看看结果是否在byte 的范围内,若不在,才会出现错误。
10、+ 的应用
注:该系列博客内容参考自传智播客刘意老师视频。