java基础(一):
一、环境搭建
二、java基本数据类型及表达式
1、标识符是以字母、下划线(”_”)或美元符(”$”)开始,后面可以跟字母、下划线、美元符和数字的一个字符序列
2、保留字是特殊的标识符,具有专门的意义和用途,不能当作用户的标识符使用。Java语言中的保留字均用小写字母表示
abstract | break | byte | boolean | catch | case | class | char | continue |
---|---|---|---|---|---|---|---|---|
default | double | do | else | extends | false | final | float | For |
finally | if | import | implements | int | interface | instanceof | long | 1ength |
native | new | null | package | private | protected | public | return | switch |
short | static | super | try | true | this | throw | throws | void |
threadsafe | transient | while | synchronized |
3、数据类型
数据类型包括基本数据类型和引用数据类型
基本数据类型:1、整数类型:字节型、短整型、整型、长整型
2、字符型
3、布尔类型
4、浮点类型 :单精度浮点型 、双精度浮点型
引用数据类型:1、类
2、接口
3、数组
4、字符串
表2.2 Java的基本数据类型
数据类型 | 所占二进制位 | 所占字节 | 取值 |
---|---|---|---|
byte | 8 | 1 | -27~27-1 |
short | 16 | 2 | -215~215-1 |
int | 32 | 4 | -231~231-1 |
long | 64 | 8 | -263~263-1 |
char | 16 | 2 | 任意字符 |
boolean | 8 | 1 | true , false |
float | 32 | 4 | -3.4E38(3.4×1038)~3.4E38(3.4×1038) |
double | 64 | 8 | -1.7E308(1.7×10308)~1.7E308(1.7×10308) |
4、常量和变量
4.1 常量:
运行过程中保持不变的量即不能被程序改变的量
1) 标识常量
标识常量使用一个标识符来替代一个常数值,其定义的一般格式为:
final 数据类型 常量名**=value[,常量名=value …]****;**
- 直接常量(字面常量)
直接常量就是直接出现在程序语句中的常量值,例如上边的3.1415926。直接常量也有数据类型,系统根据字面量识别,例如:
21,45,789,1254,-254 表示整型量;
12L,123l, -145321L 尾部加大写字母L或小写字母l表示该量是长整型量;
456.12,-2546,987.235 表示双精度浮点型量;
4567.2145F,54678.2f 尾部加大写字母F或小写字母f表示单精度浮点型量。
4.2 变量
变量是程序中的基本存储单元,在程序的运行过程中可以随时改变其存储单元的值。
1) 变量的定义
变量的一般定义如下:
数据类型 变量名**[=value]** [, 变量名[=value] …]****;
2)变量的作用域
变量的作用域是指变量自定义的地方起,可以使用的有效范围。在程序中不同的地方定义的变量具有不同的作用域。一般情况下,在本程序块(即以大括号“{}”括起的程序段)内定义的变量在本程序块内有效。
5、基本数据类型
5.1 整型
整型常量可以十进制、八进制和十六进制表示。
一般情况下使用十进制表示,如:123,-456,0 ,23456。
5.2 字符型
字符型(char)数据占据两个字节16个二进制位。
字符常量是用单引号括起来的一个字符,如‘a’,‘A’等。
字符型变量的定义,如:
char c=’a’; //指定变量c为char型,且赋初值为’a’
5.3 布尔型
布尔型数据的值只有两个:true和false。
5.4 浮点型
java提供 两种浮点型数据,单精度和双精度
一般情况下实型常量以如下形式表示:
0.123, 1.23, 123.0 等等表示双精度数;
123.4f, 145.67F, 0.65431f 等等表示单精度数
6.基本数据类型的封装
以上介绍的Java的基本数据类型不属于类,在实际应用中,除了需要进行运算之外,有时还需要将数值转换为数字字符串或者将数字字符串转换为数值等等
基本数据类型没有类,所以我们创建封装类将属性放到里面
数据类型 | 对应的类 | 数据类型 | 对应的类 |
---|---|---|---|
boolean | Boolean | int | Integer |
byte | Byte | long | Long |
char | Character | float | Float |
short | Short | double | Double |
7、算术运算符和算术表达式
算术运算符用于数值量的算术运算,它们是: +(加),-(减),*(乘),/(除),%(求余数),++(自加1),–(自减1)。
% 求两数相除后的余数,如: 5/3 余数为2;5.5/3 余数为2.5。
++、– 是一元运算符,参与运算的是单变量,其功能是自身加1或减1。它分为前置运算和后置运算,如:++i,i++,–i,i–等等。
前置运算和后置运算的区别 例:
public static void main(String[] args) {
int a = 0,b=1;
float x = 5f,y = 10f;
float s0,s1;
s0 = x*a++;//0 先执行5*0=0 (0自增还是0)
s1 = ++ b*y;//20 先自增再执行 2*10 = 20
System.out.println("a="+a+" b="+b+" s0="+s0+" s1="+s1);
s0 = a + b;//a = 1 b = 2 s0 = 3
s1++;//21
System.out.println("x%s0= "+x%s0+" s1%y="+s1%y);//x%s0=2.0(5/3余2) s1%y = 1.0 (21/10余1)
// int a = 0;
// int b;
// b= a++;//0自增还是0
// System.out.println(b);
}
8、关系运算符表达式
关系运算符用于两个量的比较运算,它们是: >(大于),<(小于),>=(大于等于),<=(小于等于),==(等于),!=(不等于)。
**关系运算符组成的关系表达式(或称比较表达式)产生一个布尔值。若关系表达式成立产生一个true值,**否则产生一个false值。
例如:当x=90, y=78时,
x>y 产生true值;
x==y 产生false值
9.布尔逻辑运算符和布尔表达式
1. !****(逻辑非)
!是一元运算符,用于单个逻辑或关系表达式的运算。
!运算的一般形式是: ! A
2. &&****(逻辑与)
&& 用于两个布尔逻辑或关系表达式的与运算。
&&运算的一般形式是: A&&B
其中:A、B 是布尔逻辑或关系表达式。若A和B的值均为true,则A&&B的值为true,否则为false。
3. ||****(逻辑或)
|| 用于两个布尔逻辑或关系表达式的运算。
|| 运算的一般形式是: A || B
其中:A、B 是布尔逻辑或关系表达式。若A和B的值只要有一个为true,则A||B的值为true;若A和B的值均为false时,A||B的值为false。
10.赋值运算符(=)和赋值表达式
赋值运算符是最常用的运算符,用于把一个表达式的值赋给一个变量(或对象)。在前边的示例中,我们已经看到了赋值运算符的应用。
与c、c++类似,Java也提供了复合的或称扩展的赋值运算符:
对算术运算有: +=,- =,*=,/=,%= 。
对位运算有: &=,^=,|=,<<=,>>=,>>>=。
例如:
x=x+y ; 相当于x=x(x+y) ;*
x+=y; 相当于 x=x+y ;
y&=z ; 相当于 y=y&z ;
***y>>=2; 相当于 y=y>>*2 ;
11.表达式运算规则
1、java的优先级
表2.4 Java运算符的优先次序
1 | . , [] , () | 9 | & |
---|---|---|---|
2 | 一元运算:+,-,++ , – , ! , ~ | 10 | ^ |
3 | new, (类型) | 11 | | |
4 | * , / , % | 12 | && |
5 | + , - | 13 | || |
6 | >> , >>> , << | 14 | ? : |
7 | > , < , >= , <=, instanceof | 15 | = , += , -= , *= , /= , %= , ^= |
8 | == , != | 16 | &= , |= , <<= , >>= , >>>= |
2、类型转换
整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,一般情况下,系统自动将两个运算数中低级的运算数转换为和另一个较高级运算数的类型相一致的数,然后再进行运算。
类型从低级到高级顺序示意如下:
低------------------------------------------------------------------------>高
byte—> short, char—> int —> long—> float —> double
byte -->short ,char -->int -->long–>float -->double
应该注意的是,如果将高类型数据转换成低类型数据,则需要强制类型转换,这样做有可能会导致数据溢出或精度下降。
如: long num1 = 8; (把一个long类型的值转化为int型)
int num2 = (int)num1;
long num3 = 547892L;
short num4=(short)num3; //将导致数据溢出