数据类型
数据类型分为基本数据类型和引用数据类型。
整数类型 | 整数类型默认为int | 类型 | 占用的字节数 | 范围 |
byte | 字节 | 1 | -128~127 | |
short | 短整型 | 2 | -32768~32767 | |
int | 整数类型 | 4 | ||
long | 长整形 | 8 | ||
浮点类型 | 浮点类型默认是double | |||
float | 单精度 | 4 | ||
double | 双精度 | 8 | ||
字符型 | char |
字符 | 2 | |
布尔型 | boolean | true或fales | 1 |
注意:由于整数类型默认类型是int类型所以long类型的变量的后面要加上一个标记L;
变量
定义变量注意事项:
- 变量名不能为Java中的关键字。
- 不能以数字开头。
- 同一变量不能重复定义。
- 一行内只定义一个变量。
- 变量名要有实际的含义。
- Java严格区分大小写大小写不同的变量是两个变量。
- 每一个变量必须有初始值。
变量的计算中尽量使用同一种类型的变量进行计算。
不同类型变量之间的计算
byte,short,char 三个之间相互不转换的,但是一旦参与运算,都默认转换转换成int类型。
强制类型转换:
目标数据类型 变量名 = (目标数据类型)(变量值);
强制类型转换不推荐使用容易损失精度。
例题
byte b1=3,b2=4,b; b=b1+b2; b=3+4;
这段赋值运算中b=b1+b2会编译失败,因为byte进行运算时会自动转化成int型变量,int型变量无法赋值给一个byte型的变量。
赋值运算中范围较大的变量不能赋值给范围较小的变量。如果有需要则要进项强制类型转化。
常量
常量在程序执行的过程中其常量的值不会发生变化。
字符串常量 | “hello” | 用双引号括起来 |
字符常量 | ‘a’ ‘b’ ‘Q’ | 用单引号括起来的单个内容,‘asd’(这种是错误的) |
整数常量 | 100 | |
小数常量 | 23.234 | |
布尔常量 | true/false | |
空常量 | null | 在面向对象中,如果一个对象为null,需要加非空判断 |
标识符命名规则
标识符由英文大小写字母,数字,下划线组成。不能以数字作为开头。
包 | 字母全部小写 | |
类,接口 | 单个单词第一个字母大写 | 多个单词每个单词首字母大写 |
方法 | 单个单词字母全小写 | 多个单词第一个单词全小写其余首字母大写 |
常量 | 字母全部大写 | 多个单词全大写单词之间用_隔开 |
运算符
Java中的运算符、算术运算符、赋值运算符、比较运算符、逻辑运算符、三目运算符
基本算术运算符
+,-,*,/,%
扩展的算术运算符:
++或者--
比较运算符:
>,>=,<,<=,==
基本的赋值运算符:=
扩展的赋值运算符:
+=,-=,*=,/=,%=
注意:扩展赋值运算符例如x+=1不等价于x=x+1。扩展赋值运算符中隐藏了强制类型转化的功能。
当x为short类型时x=x+1会编译错误,而x+=1可以正常执行。
解决办法:
short x=1; x=(short)(x+1)//强制类型转化
基本逻辑运算符
&:逻辑与 |:逻辑或 ^(逻辑异或) !(逻辑非)
逻辑&: 有false,则false
逻辑或|:有true,则true
逻辑异或:^:相同则为false,不同则为true
逻辑非!:非true则false,非false,则true,偶数个是他本身
扩展的逻辑运算符:
逻辑双与:&&
逻辑双或:||
注意:扩展逻辑运算符与基本类型运算符的不同是&&相比于&如果左边的表达式为false则不会执行右边的语句。
实际开发中扩展的逻辑运算符使用的最多。
三目运算符
(表达式)? true的结果:false的结果;
首先判断表达式是否成立,如果比表达式成立,就执行true的结果,否则,false的结果;
输出语句
基本格式:
System.out.println("要输出的语句");
注意事项:
1、双引号“ ”内为字符串,双引号内不能嵌套双引号。
在输出语句中字符串后面的加号为字符串拼接符。字符串+(字符串拼接符)任何数据=字符串
比如以下语句执行后会输出 5+5=55。
System.out.println("5+5="+5+5);
2、变量输出时直接书写不加双引号,如:
int a=1; System.out.println(a);
3、字符输出时使用单引号,如:
System.out.println('A');
4、多种格式一起输出时用+连接,需要注意字符串后面的加号为字符串拼接符,如:
int a=1; System.out.println("hello"+(5+5)+'A'+a);输出为:hello10A1
5、正则表达表达式
转义字符:
'\t' 制表符
'r' 回车符
'\n' 换行
6、System.out.println();默认会换行,System.out.print();不换行。
键盘录入
键盘录入的步骤:
1)创建一个键盘录入对象
Scanner sc= new Scanner(System.in) ;
sc可以自己命名。
2)导包: import java.util.Scanner;
ctrl+shift+o 快速导包
3)接收键盘录入的数据
int number = sc.nextInt() ;
数据类型可以更改但是不能接收char类型
4)输出数据
键盘录入字符串类型
String line = sc.nextLine() ;
例题:求两个数的最大值
package text01; import java.util.Scanner;//导包 public class text { public static void main(String[] args) { Scanner sc = new Scanner(System.in) ;//创建键盘录入对象。 System.out.println("请您输入第一个数据:"); int num1 = sc.nextInt() ; //接收键盘录入的数据 System.out.println("请您输入第二个数据:"); int num2 = sc.nextInt() ; int max = (num1 >num2)? num1:num2 ; System.out.println("您输入的最大值是:"+max); } }
选择结构语句
if语句
基本格式:
if(条件表达式){ 语句; }//当条件表达式中的条件成立时执行语句,否则不执行。扩展格式:
if(条件表达式){ 语句一; } else{ 语句二; }//当条件表达式中的条件成立时执行语句一否则执行语句二。扩展格式2:
if(条件表达式1){ 语句1; }else if(条件表达式2){ 语句2; }else{ 语句4; }//先判断条件表达式一,不成立则判断条件表达式2,都不成立则执行else中的语句。
switch语句
基本格式
switch(表达式){ case 1:语句一;break; case 2:语句二;break; ... default:语句n;break; }执行流程
先计算表达式中的值然后用case后面的的值跟表达式的值进行比较。如果相等则执行case后面的语句。如果都不相等则执行default后面的语句。
注意事项:
- case后面的break如果省略则执行当前语句后会继续执行下面的语句直到遇见break,造成case穿透。
- 如果没有break则一直将switch里面的语句执行完。
- switch后面的表达式可以为byte、short、int、char、枚举、string。枚举在jdk5以后支持。string类型在jdk7以后支持。
- case后面只能跟常量。
- case后面为冒号:
- default可以在语句中的任何位置。
case穿透并不是坏事,可以利用case穿透的特性完成一些任务。
//输入一个月份判断是一年中的什么季节。 package text01; import java.util.Scanner;//键盘输入导包 public class text { public static void main(String[] args) { Scanner sc = new Scanner(System.in) ;//创建键盘录入对象。 System.out.println("请你输入月份的值:"); int month = sc.nextInt() ; switch(month) { case 1: case 2: case 12: System.out.println("冬季");break ; case 3: case 4: case 5: System.out.println("春季");break ; case 6: case 7: case 8: System.out.println("夏季");break; case 9: case 10: case 11: System.out.println("秋季");break ; default: System.out.println("没有该月份..."); break ; } } }
循环结构语句
while循环
while(循环条件语句){ 循环体语句; 步长语句; }
执行流程:当循环条件语句满足时执行循环体语句、执行步长语句。继续判断循环条件语句是否满足。
当条件不满足时循环结束。
注意:
- break语句可以控制跳出循环。(break不能单独使用。一般用于循环语句和switch语句)
- continue语句可以结束本次循环进入下一次循环。(continue语句也不能单独使用多用在循环语句。)
- break和continue通常搭配选择结构语句使用。
- 循环条件语句如果为true则进行无限循环,直到遇到break为止。
- 通常用于不知道具体的循环次数。
do while语句
do{ 循环体语句; 步长语句; }while(循环条件语句);
注意:do while语句和while语句的区别是do while语句循环体部分至少执行一次后再判断循环条件是否成立。
for语句
for(初始化条件;循环条件;步长语句){ 循环体语句; }
执行流程:
- 初始化循环条件变量。
- 判断变量是否满足循环条件语句。
- 执行循环体语句
- 执行步长语句。
注意事项:
- 初始化语、循环条件语句和步长语句之间用 ; 隔开。
- 循环条件为boolean类型
- 如果for循环的()内不写条件如:
for(;;){ 循环体语句; }
则这个for循环为死循环。 - break语句和continue语句同样可以用于for循环,用法同while循环。
- for循环初始化条件中定义的变量在for循环结束后会被回收。定义的变量仅能用于for循环。
- 从内存占用角度考虑for循环优于while循环,实际开发中根据需要使用。for循环多用于知道具体的循环次数。
- for循环可以嵌套for循环。