Java数据类型几乎是贯彻你以后所有的知识的,所以在学习Java之前一定弄明白这个知识点!!!
* Java是程序设计语言 Java在服务器端编程和跨平台客户端应用领域则很有优势。
* Java语言所具备的特征
1)简单性 2)面向对象 3)分布式 4)健壮性 5)安全性 6)体系结构中立
7)可移植性 8)解释型 9)高性能 10)多线程 11)动态性
ps:了解下这些java特性有助于你对java的认识。这些也称作Java“白皮书”的关键术语.在oracle官网也可以找到官方解释(英文版)
https://www.oracle.com/technetwork/java/langenv-140151.html
http://horstmann.com/corejava/java-an-overview/7Gosling.pdf
1.JAVA环境:
JDK:Java Development Kit java开发环境
面向开发人员使用的SDK,提供了开发环境
和允许环境 包含了一个JRE
JRE: Java Runtime Environment java运行环境
是面向程序的使用者,提供运行环境
JVM :JAVA虚拟机 jre包含了一个JVM
***注意JDK和JRE的区别:
一个是开发环境,一个是运行环境。
面向的对象不同,JDK面向开发人员、JRE面向程序使用者。
两者都包含了一个JVM,其中JDK是因为包含了一个JRE才有JVM的。
2.命令提示符运行Java文件
前提:需要进行Java环境变量设置:基本上现在直接在百度上搜索,会有很多教程的;
JAVA_HOME:C:\Program Files\Java\jdk1.8.0_121
path:%JAVA_HOME%/bin
操作:在命令提示符中切换到需要运行的Java文件所在目录
·切换到D盘
C:\Users\lenovo>d:
·切换到D盘的目录D:\kkk\kk\k
d:>cd kkk\kk\k
命令:
javac命令:将.java文件编译成.class文件
java命令 : 执行.class文件
3.Java文件名与类名的关系
·一个Java文件中可以写多给类
·Java文件名必须与被public修饰的类名相同。
·public修饰的类最多只能有一个
·如果没有public的类,则Java文件名与其中一个类名相同即可
·如果一个文件中有多个类,则会编译成多个class文件建议一个类一个文件
4.数据类型
8种基本数据类型(1字节 = 8位)
·byte 1字节
·short 2字节
·int 4字节
·long 8字节
·float 4字节
·double 8字节
·boolean 1位
·char 2字节
JAVA中将小数默认为double类型,若要定义float需在数据后面用f声明;
对应的类类型:Byte、Short、Integer、Long、Float、Double、Boolean、Character
***数据类型之间的转换以及Java中转换遵循的原则
·Java中默认转换规则
取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算
·Java语言中的数据类型转换有两种:
自动类型转换:编译器自动完成类型转换,不需要在程序中编写代码。
强制类型转换:强制编译器进行类型转换,必须在程序中编写代码声明。
·自动类型转换
概念:又叫隐式转换,系统自动完成类型转换(由于实际开发中这样的类型转换很多,所以 Java 语言在设计时,没有为该操作设计语法,而是由 JVM 自动完成)
规则:从储存范围小的类型到储存范围大的类型。(赋值等号右边的范围要小于等于左边的就可以自动向上转型)
具体规则为:byte→short(char)→int→long→float→double
例子:
byte b=10;
short sh=b;
解析:这里在给sh赋值时,JVM首先将b的值转换成short类型然后再赋值给sh。
当然,在类型转换的时候也可以跳跃,就是byte也可以自动转换为int类型的。
注意:整数之间进行类型转换的时候数值不会发生变化,但是当将整数类型特别是较大的整数类型转换成小数类型时,
由于储存精度不同可能会存在数据精度的损失。
·强制类型转换
概念:又叫显示转换,必须在程序中编写代码才能完成类型转换(该类型转换存在精度的损失可能性较大)
规则:从存储范围大的类型到存储范围小的类型。
具体规则为:double→float→long→int→short(char)→byte
语法格式为:(转换到的类型)需要转换的值
例子:
double d=3.14;
int i=(int) d;
注意:强制类型转换通常都会存储精度的损失,谨慎使用。
ps:类型转换的概念到后面也会运用到,所以这里一定不要死记。尤其是在多态的运用中。
5.运算符:对常量和变量进行操作的符号
算数运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
三目运算符
6.在赋值中使用二元运算符
x+=4; 等价于 x = x+4;
ps:使用二元运算符有一个好处,当等式一边需要进行类型转换时,使用二元运算符会自动转换。
int x = 0; //声明一个int类型的变量,并进行赋值初始化
x+=3.5; //3.5是一个浮点型,需要转换成int,这里会自动转
x = (int) (x+3.5); //需要显示声明转换类型
7.自增和自减
int i = 12;
i++;
i--;
++i;
--i;
这四种情况都会使变量i的值加1或减1.但是在具体表达式中使用时,放在前面的和放在后面的就有所区别了。前缀形式会先完成加1;而后缀形式会使用变量原来的值。
int m = 7;
int n = 7;
int x = 2*++m; //结果是:x=16 m=8
int y = 2*--n; //结果是:y=14 n=8
8.三目运算
三元操作符:? :
表达式:condition ? expression1 : expression2
x<y ? x:y;
如果x小于y,则返回x,否则返回y
变量
声明变量:变量类型 变量名;
变量名:变量名必须是一个以字母开头并由字母或数字构成的序列。变量名是区分大小写的。一般一个合格的程序员所定义的变量名是要具有意义的。
可以在一行中声明多个变量;
int a,b;
但是,一般不提倡使用这种风格。逐一声明每一个变量可以提高程序的可读性。
变量初始化:
声明一个变量后,必须用赋值语句对变量进行显示初始化,千万不要使用未初始化的变量。否则会报错:error--variable not initialized
常量:在Java中利用关键字final指示常量。
final double MAX_SCORE = 100.0;
关键字final表示这个变量只能被赋值一次。一旦被赋值后,就不能再更改了。有个不成文的约定,常量名使用全大写。
关于数据类型的相关面试题:
1、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 +=1;有什么错?
答:对于short s1=1;s1=s1+1来说,在s1+1运算时会自动提升表达式的类型为int,那么将int赋予给short类型的变量s1会出现类型转换错误。
对于short s1=1;s1+=1来说 +=是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。