天天看点

第一课:变量与数据类型

Stanford University Network:斯坦福大学网络公司。

Java之父:詹姆斯-高斯林(James Gosling)。

Java语言诞生时间:1995年5月23日。

1998年12月JDK1.2发行,将Java分成了J2SE,J2EE,J2ME。

2004年10月JDK1.5发行,改名为JavaSE,JavaEE,JavaME。

2009年4月20日,甲骨文(Oracle)74亿美元收购Sun。

甲骨文收购Sun的第一个发行版本是:2011年7月发行的JavaSE7.0。

J2SE做桌面应用程序的开发。

安卓替代了J2ME做手机端(移动端)开发。

J2EE做服务器端的开发。

Java程序的跨平台是依赖虚拟机来实现的(平台指的是操作系统)。虚拟机是不是跨平台的?

使用jdk开发完成的java程序,交给jre去运行,由jre里面的虚拟机(jvm)来保证java程序的跨平台。

jre包括jvm和核心类库。jdk包括jre和java的开发工具包。

d:切换盘符。

dir:显示当前目录下所有文件或者文件夹的名称。

cd:进入某一个目录。

cd.. :回退。

cd \ :切换到根目录。

cls :清屏。

exit:退出黑窗口。

jdk的下载和安装:

http://www.oracle.com。

HelloWorld案例的流程图:

1)编写一个.java的源文件;

2)把.java的源文件通过编译器编译生成一个.class的字节码文件;

3)把.class的字节码文件通过解释器去解释执行,最终在电脑的控制台看到我们想要的结果。

HelloWorld案例的常见问题:

1)单词拼写问题。

class -Class  提示需要class。

String-string 提示找不到符号。

System-system 提示程序包不存在。

main-mian 编译不会保存,运行时报在类HelloWorld找不到主方法。

2)中文符号问题。

;-;提示非法字符。

为什么要配置环境变量?(让bin目录下的命令能够在任意目录下都能执行)

因为程序的编译和运行需要javac和java命令,所以只能在bin目录下写程序;但是在实际开发中,不可能把程序写到bin目录下,所以我们要让javac和java命令在任意目录下能够访问;所以要配置环境变量。

环境变量配置完成后,为啥不能再任意目录下执行bin目录下的命令?

因为这个窗口是配置环境变量之前打开的;要想使配置的环境变量生效;需要重启dos窗口。

注释:用于解释说明程序的文字。

注释的作用:解释说明程序,提高程序的阅读性。

注释分类:单行注释,多行注释,文档注释。

关键字:被Java语言赋予特定含义的单词。

特点:

1)组成关键字的字母全部小写

2)常见的代码编辑器对关键字有特殊颜色标记

常量的概述和分类:

常量:在程序的执行过程中,其值不可以发生改变的量。

常量分类:字符串常量("HelloWorld"),整数常量(12,-23),小数常量(12.23),字符常量('a','0'),布尔常量(true,false),空常量(null)。

变量:是内存中的一小块区域,在程序的执行过程中,其值可以在一定范围内发生改变。

组成:

1)对区域要有限定;如何限定呢?用数据类型限定。

2)必须对区域给一个名称;变量名。

3)区域内必须有内容;初始化值。

变量的定义格式:数据类型  变量名 = 初始化值。

计算机存储单元:

计算机存储设备的最小信息单元叫“位”(bit);计算机最小的存储单元叫“字节”(byte);字节是由连续的8个位组成。

数据类型:Java是一种强类型语言,针对每一种数据都给出了明确的数据类型。

数据类型分类:基本数据类型,引用数据类型(类,接口,数组)。

基本数据类型分类:整数(byte 1,short 2 ,int 4 ,long 8),浮点数(float 4 ,double 8),字符(char 2)(Java中的字符采用Unicode编码,每一个字符占两个字节,所以可以用来存储一个汉字),布尔(boolean 1)。

注意事项:

1)整数默认是int类型,浮点数默认是double类型。

2)定义long类型数据的时候,要加L或者l,建议加L;定义float类型数据的时候要加F或者f,建议加F。

标识符:就是用来给包,类,方法,变量等起名字的符号。

组成规则:

1)Unicode字符

数字字符,英文大小写字母,汉字(不建议使用汉字)。

2)下划线 _

3)美元符 $

注意事项:

1)不能以数字开头;提示不是语句。

第一课:变量与数据类型

2)不能是Java中的关键字。

第一课:变量与数据类型

标识符的常见命名规则:(见名知意)

包(其实就是文件夹,用于对类进行管理):全部小写;多级包.隔开(com,com.itheima)。

类:一个单词首字母大写(Student,Car);多个单词每个单词的首字母大写(HelloWorld)。

方法和变量:一个单词首字母小写(age,show());多个单词组成从第二个单词开始每个单词大写(maxAge,getAge())。

变量的定义和使用:

short s = 100;
System.out.println(s);
           
第一课:变量与数据类型

100默认是int类型,因为100也在short数据类型的范围内,不会损失精度,所以编译运行都不会报错。

long l = 100000000000000000;
System.out.println(l);
           
第一课:变量与数据类型

100000000000000000默认是int类型,但是它超过了int的取值范围,转换成int类型会损失精度, 所以会报过大的整数错误。

long l = 100000000000000000L;
System.out.println(l);
           
第一课:变量与数据类型

100000000000000000默认是int类型,但L将其标记成为long类型,所以编译运行不会报错。

float f = 12.34;
System.out.println(f);
           
第一课:变量与数据类型

12.34默认是double类型,转换成float可能会损失精度,所以会报错误(可能损失精度)。

float f = 12.34f;
System.out.println(f);
           
第一课:变量与数据类型

12.34默认是double类型,但f将其标记为float类型,不会损失精度,所以不会报错。

变量定义的注意事项:

1)变量未赋值不能直接使用。

int a = 10;
System.out.println(a);
           
第一课:变量与数据类型

因为变量a赋值为10,所以在输出语句中可以使用。

int b;
System.out.println(b);
           
第一课:变量与数据类型

因为没有对变量b进行赋值,所以在输出语句中不能使用b,否则在编译时会报可能未初始化变量b。

int b;
b = 20;
System.out.println(b);
           
第一课:变量与数据类型

这段代码说明只要在使用之前给出变量的初始化值,变量就可以正常使用。

2)变量只在它所属的范围内有效(变量属于它所在的那对大括号)。

{
		int c = 30;
		System.out.println(c);
}
           
第一课:变量与数据类型

 c是可以正常使用的。

{
		int c = 30;
		System.out.println(c);
}
System.out.println(c);
           
第一课:变量与数据类型

因为代码块外面没有c变量,所以直接输出c,编译时会报找不到符号的错误。

3)一行上可以定义多个变量,但是不建议。

类型转换:

我们在做运算的时候,一般要求参与运算的数据的类型必须一致。

int a = 3;
int b = 4;
int c = a + b;
System.out.println(c);
           
第一课:变量与数据类型

不会报错,输出7。

byte bb = 2;
int cc = 5;
System.out.println(bb + cc);
           
第一课:变量与数据类型

我们直接输出这个结果是可以的,说明我们也应该可以接收这个数据。我们要求参与运算的数据类型一致,而现在不一致,我们应该用什么类型接收呢?

byte bb = 2;
int cc = 5;
System.out.println(bb + cc);
byte dd = bb + cc;
           
第一课:变量与数据类型

 编译报可能损失精度,需要byte,但是找到了int。

因为+需要参与运算的数据类型必须一致,bb隐式转换成int类型,两个int类型的数据相加,肯定还是int类型,占四个字节,如果用byte来接收,需要砍掉3个字节,会损失精度。

byte bb = 2;
int cc = 5;
System.out.println(bb + cc);
		
//byte dd = bb + cc;
int ee = bb + cc;
           
第一课:变量与数据类型

说明bb+cc最终的类型是int类型,这里就涉及到了类型转换的问题了。

隐式转换:byte,short,char -----int类型。然后再参与运算。

byte short char int long float double,从小到大是可以隐式转换的。

 强制类型转换:目标类型  变量名 = (目标类型)(被转换的数据);

byte a = 10;
int b = 20;
byte c = byte(a + b); 
System.out.println(c);
           
第一课:变量与数据类型

代码是报错的。 

byte a = 10;
int b = 20;
byte c = (byte)(a + b); 
System.out.println(c);
           
第一课:变量与数据类型

 建议:数据做运算,结果应该是什么类型,就用什么类型接收,不要随意转换类型,否则会有精度的损失。