数据类型与运算符
变量
变量的命名
变量:一个命名的存储空间
命名规则:
1、变量命名可以使用字母、下划线、美元符号、人民币符号、数字中的一种或多种,不能使用其他符号。
2、数字不能作为命名的开头,但字母、下划线、美元符号和人民币符号可以作为开头。
3、不能使用关键字作为变量命名,如public、class等带特殊颜色的单词。
规范:
1、驼峰命名法。变量命名由多个单词组成的,第一个单词首字母小写,后面其他单词的首字母大写。
2、变量命名要有意义,让人容易辨别出变量的含义。
3、变量命名首字母不要大写。
Java注释
用于在代码中进行说明,不会在程序中输出。
分为单行注释、多行注释、JavaDoc注释。
1、单行注释以"//"开始
2、多行注释以"/*“开头,以” */"结尾,通常写在方法上面
3、JavaDoc注释,以"/**“开头,以” */"结尾,通常写在类上面,结构与多行注释类似。
数据类型
Java中常用的数据类型大致可以分为两大类:数值型 与非数值型。
其中,数值型包括整型和浮点型。我们常用的整型有byte、short、int、long;常用的浮点型有float、double;非数值型里包括单字符char、布尔型boolean、以及字符串String。
我们将byte、short、int、long、float、double、char、boolean归为基本数据类型,而String不属于基本数据类型,而是引用数据类型。
我们在写代码的时候,整型的数据通常默认为int类型,超过int类型取值范围的,必须在整数后面加大写的英文单词"L",才能作为long类型处理。
例如:long num = 2147483648L;
浮点数默认数据类型为double类型。如果要声明一个float类型的变量,在赋值的时候需要在数值后面加上大写或小写的“F”,否则会在编译的时候报错。
例如:float num = 5.6f;
非数值型在赋值的时候与数值型不同,其中
字符型char在赋值时,赋值符号右边的数据需要用单引号 ‘ ’ ,
例如:char sex = ‘男’;
字符串String在赋值时,赋值符号右边的数据需要用双引号 " ",
例如:String name = “张三”;
布尔型boolean的值只有两种,true和false。
变量声明及使用
Java中的变量就是在程序运行中,其值可以改变的量,它是一个数据存储空间的表示。
Java中变量声明及使用的步骤如下:
第一步:声明变量,根据数据类型在内存申请空间
格式:数据类型 变量名; eg:int money;
第二步:赋值,即“将数据存储至对应的内存空间”
格式:变量名 = 数值; eg: money =100;
第一步与第二步可以合并
格式: 数据类型 变量名 = 数值; eg: int money = 100;
第三步:使用变量,即“取出数据使用”
常量
Java中的常量是指在程序运行中值不能改变的量。常量的声明与赋值过程和变量相似,只是在声明变量的前面加上了final关键字,并且常量只能赋值一次,之后不能再对其进行重新赋值。
例如:final double PI = 3.14;
常量命名的规则与变量相同,但是在规范上有些不同:
1、常量名通常大写,而变量名通常小写,用以方便区分。
2、常量名由多个单词组成的,不同字符使用下划线分隔。
如:MAX_NUM
数据类型转换
Java中不同的基本数据类型之间进行运算时,需要进行类型转换。Java中的数据类型转换可以分为自动类型转换和强制类型转换两种。
自动数据类型转换
将低精度的数据类型赋值给高精度的数据类型,系统将自动进行类型转换,但两种数据类型要互相兼容才可进行转换。数据类型转换通常是在数值型的数据类型之间进行转换,因为在数值型中,double类型的精度最高,所以当表达式中有一个值为double的时候,整个运算结果提升为double类型。
例如:int a = 7;
double b = 3.5;
double c = a+b;
强制数据类型转换
将高精度的数据类型赋值给低精度的数据类型时,必须进行强制类型转换。在Java中,通常使用一对小括号里加上目标数据类型来对源类型进行转换。
例如: double a =3.5;
int b = (int)a;
在进行强制数据类型转换的时候,因为把高精度的数据类型转换为低精度的数据类型,所以在转换的过程中,可能会损失数据的精度。浮点型转换为整型时,将丢失小数点后面的小数部分。
Scanner类的使用
在程序运行中,如果想要在控制台接收用户键盘输入的数据,就可以用到Scanner类。在JDK1.5版本的时候引入了Scanner类,我们在代码中使用Scanner类,可以分为三个步骤:
1、导入Scanner类
import java.util.*;
2、创建Scanner对象
Scanner input = new Scanner(System.in);
3、获得键盘输入的数据
int now = input.nextInt();
根据获取的数据类型不同,Scanner获取数据的方法有以下几种常用方式(可在JAVA帮助文档中查阅Scanner的方法):
String name = input.next();
String sex = input.next();
int age = input.nextInt();
double score = input.nextDouble();
在获取的数据为字符串时,通常用input.next();在获取的数据为其他基本数据类型时,通常用input.next<基本数据类型>(),但Scanner不能获取char类型的数据。
常用运算符
1、赋值运算符
赋值运算符”=“用于给变量接收数值。
如:int a = 5;
赋值运算符”=“在表达式中的优先级最低。
2、算数运算符
包括 + 、- 、 * 、/ 、%、++、–
运算符 含义 范例 结果
- 加法运算符 5+3 8
- 减法运算符 5-3 2
- 乘法运算符 5*3 15
/ 除法运算符 5/3 1
% 取余运算符 5%3 2
++ 自增运算符 i=3, j = i++ i=4; j=3
i=3, j = ++i i=4; j=4
– 自减运算符 i=3, j = i– i=2; j=3
i=3, j = --i i=2; j=2
++和–在实际使用中,根据放在数值前面或者后面,结果会有所不同。++或 – 在数值前面时,先对数值进行自增或者自减,再与其他数值进行运算;++ 或 – 在数值后面时,先将数值与其他数值进行运算,再对数值进行自增或者自减。
3、复合算数运算符(复合赋值运算符)
赋值运算符与算术运算符相结合,组成复合赋值运算符。主要包括 += 、 -= 、 *= 、 /= 、%= 。
num1 +=2; 相当于 num1 = num1 + 2;
num1 *=2; 相当于 num1 = num1 * 2;
其他同理。
4、关系运算符
用来比较两个变量或者常量的大小,运算结果时布尔值true 或 false。主要包括 ==、!= 、>、<、>=、<=
运算符 含义 范例 结果
== 等于 5==6 false
!= 不等于 5!=6 true
大于 5>6 false
< 小于 5<6 true
= 大于等于 5>=6 false
<= 小于等于 5<=6 true
要注意的是,”=“为赋值运算符,"=="才是等于关系运算符。
、<、>=、<= 运算符的优先级别高于==、!=;
、<、>=、<= 运算符只支持数值类型的数据比较,==、!=支持所有数据类型的比较,包括数值类型、布尔类型、引用类型。
5、逻辑运算符
逻辑运算符用于对两个布尔型操作数进行运算,其结果还是布尔值。主要包括&&、||、&、|、!
运算符 含义 运算规则
&& 短路与 两个操作数都是true,结果才是true;左边操作数能确定结果时,不运算右边的操作数
|| 短路或 两个操作数其中有一个是true,结果就是true;左边操作数能确定结果时,不运算右边的操作数
& 逻辑与 两个操作数都是true,结果才是true;左边操作数能确定结果时,也会运算右边的操作数
| 逻辑或 两个操作数其中有一个是true,结果就是true;左边操作数能确定结果时,也会运算右边的操作数
! 非 操作数为true,结果为false;操作数为false,结果为true;
1、&和&&;|和||之间的唯一区别就在于,左边操作数能确定表达式结果的情况下,&&和||不会运算右边的操作数,而&和|则会继续运算右边的操作数。
2、优先级别:! > && >||
6、条件运算符
也称三目(三元)运算符。
条件运算符的语法格式如下:
条件 ? 表达式1 : 表达式2
首先对条件进行判断,如果判断为true,则返回表达式1的值,如果判断为false,则返回表达式2的值。
例如: int min;
min = 5<7 ? 5 : 7; //此时min获得的值为5
min = 10<7 ? 10 : 7; //此时min获得的值为7
运算符的优先级
1、单目运算符包括 ! 、++、 – ,优先级别高。
2、优先级别最低的是赋值运算符,其次是条件运算符。
3、()的优先级别最高,可以通过()控制表达式的运算顺序。
4、从右向左结合性的只有赋值运算符、三目运算符和单目运算符。
例如: int min;
min = 5<7 ? 5 : 7; //此时min获得的值为5
min = 10<7 ? 10 : 7; //此时min获得的值为7
运算符的优先级
1、单目运算符包括 ! 、++、 – ,优先级别高。
2、优先级别最低的是赋值运算符,其次是条件运算符。
3、()的优先级别最高,可以通过()控制表达式的运算顺序。
4、从右向左结合性的只有赋值运算符、三目运算符和单目运算符。
5、总体而言,优先顺序为算数运算符 > 关系运算符 > 逻辑运算符。