八种基本数据类型,使用8个关键字修饰,结构简单。在上一篇中重点讲了整数型(byte,short,int,long);浮点型(float,double);布尔型 (Boolean);
这一片将j将概述字符型char.
- char型数据用来表示单个字符,字符串用String;
- 使用时字符用单引号,即char b1='a';
- 可以包含世界上所有的书面语字符
另外 ,char类型是可以参与运算的,因为char类型在字符编码表中有对应的数值。在上个世纪60年代,美国制定了一套字符编码,对英语字符与 二进制位之间的关系, 做了统一规定。这被称为ASCII码。 ASCII码一共规定 了128个字符的编码,比如空格“SPACE”是32(二进制 00100000),大写 的字母A是65(二进制01000001)。这128个符号(包括32个不 能打印出来的 控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。当然这套字符编码 有一个缺点就是它不能表示所有的字符。后来便有了Unicode编码,它将世界上所有的符号都收纳了进去。
- 注意,在Java运算中,char类型是可以运算的,原因就是char在编码表中都有对应的值。
例如 char='a'+1 ,在这里先将’a'提升为Int,a为97,即此代码的运行结果为98,对应字符是b.
基本数据类型转换
在java中除了boolean类型 之外,其余基本类型都可以相互转换。
转换分为默认转换和强制转换。
默认转换:各个基本数据类型在运算中相互转换
转换原则:小容量类型默认转换为大容量类型。数据类型容量大小排序byte、short、char < int < long < float < double;另外,byte,short,char之间不会相互转换,在计算时会先转换为int类型。容量大的数据类型转换为容量小的数据类型时,要加上强制转换符,但可能造 成精 度降低或溢出;使用时要格外注意。
有多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的 那一 种数据类型,然后再进行计算。
当然,上一篇提到float占4个字节,long占8个字节。那么我们可能会有一个疑问:为什么4字节的float比8字节的long容量大呢?
long整型数,在内存中占用8个字节共64位,它表示的数值有2的64次方,平 分正负,数值范围是负2的63次方到正2的63次方-1。 而float在内存中占4个字节,共32位,但是浮点数在内存中是这样的: V=(-1)^s * M * 2^E 浮点数的32位不是简单的直接表示大小,而是按照一定的标准分配的。 其中第1位,符号位,即S。 接下来的8位,指数域,即E。 剩下的23位,小数域,即M。 也就是说,浮点数在内存中的二进制值不是直接转换为十进制数值的,而是 按照上述公式计算而来,通过这个公式,虽然只用到了4个字节,但是浮点数却 比长整型的最大值要大
运算符
算术运算符:+,-,*,/,%,++,--
字符串运算符:+
比较运算符:<,>,<=,>=,!=,==
逻辑运算符:!,&,|,&&,||
赋值运算符:+=,-=,*=,/=
条件运算符
位运算符
算术运算符
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | b=4,-b | -4 |
+ | 加 | 1+1 | 2 |
- | 减 | 1-1 | 0 |
* | 乘 | 1*1 | 1 |
/ | 除 | 1/1 | 1 |
% | 取余 | 7%5 | 2 |
++ | 自增(前)先运算后取值 自增(后)先取值后运算 | a=2,b=++a a=2,b=a++ | a=3,b=3 a=3,b=2 |
-- | 自减(前)先运算后取值 自减(后)先取值后运算 | a=2,b=--a a=2,b=a-- | a=1,b=1 a=1,b=2 |
+ | 字符串相加 | "hel"+"llo" | "hello" |
逻辑运算符
“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算 “|”和“||”的区别同理,||表示:当左边为真,右边不参与运算
赋值运算符
符号:= 。 当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原 则进行处 理。 扩展赋值运算符: +=, -=, *=, /=, %=
条件运算符
语法:
- (条件表达式)? 表达式1:表达式2;
- 条件表达式结果为true,运算后的结果是表达式1; 为false,运算后的结果是表达式2
位运算
控制台输入
使用标准输入串System.in 使用Scanner取得一个字符串或一组数字 在新增一 个Scanner对象时需要一个System.in对象,因为实际上还是 System.in在取得 用户输入。
● Scanner的next()方法用以 取得用户输入的字符串; nextInt()将取得的输入字 符串转换为整数类型;
● 同样,nextFloat()转换成浮点型; nextBoolean()转 换成布尔型。
● 例: System.out.print("输入"); Scanner scan = new Scanner(System.in); String read = scan.next (); System.out.println("输入数据:"+read); 在使用Scanner对象时,需要在文件头带入 java.util.Scanner; 写法为: import java.util.Scanner
控制语句
条件语句:if,if ·······else,if·····else if,if···else if···else if···else,switch;
循环语句:for ,while,do while;
- if ( 条件 ) { //语句1 }else { //语句2 }
- if-else语句的另一种形式为: if (条件1){
语句1; }
else if (条件2){
语句2; }…… }
else if (条件N){
语句N; }
switch语句
switch语句:多分支选择语句,根据表达式的值,来执行多个操作中的一个。
switch (表达式){ case value1: 语句序列1;
[break]; …………
case valueN: 语句序列N;
[break];
[default : 缺省语句;] }
表达式可以是byte、short、int、char、枚举类型。JDK 7以后,可以使用String类 型; case语句后面只能使用常量表达式; case后的值不能重复; 某个case分支如果没有提供break语句,则继续执行下一个case后的语句; 当表达式的值与任一case子句中的值都不匹配时,将执行default后面的语句;如果 没有default子句,则程序直接跳出switch语句
循环
循环语句功能 :在某些条件满足的情况下,反复执行特定代码的功能
循环语句的四个组成部分 :循环变量的初始化 循环条件部分 循环体部分 循环变量的更新
while & do while语句
while 语句为如下形式:
例如,求100以内的数和
*/
public static void main(String[] args) {
int i = 1; //第一个数
int sum = 0; //100以内整数的和
while (i <= 100){
sum += i ;
i++;
}
System.out.println(sum);
}
do while 语句为如下形式:
求100以内的整数和
*/
public static void main(String[] args) {
int i = 1; //第一个数
int sum = 0; //100以内整数的和
do{sum = sum + i;
i++;
}while(i<= 100);
System.out.println(sun)
}
For循环语句
for 语句为如下形式:
/*
例如,求100以内的整数和
*/
public static void main(String[] args) {
int sum = 0; //100以内整数的和
for (int i = 0;i <= 100 ;i++ ){
sum = sum + i;
}
System.out.println(sum);
}