java语言基础
变量
变量的概念:
计算机内存中的一块存储空间,是存储数据的基本单元。
赋值运算符:
- 概念:为变量赋值
- 变量名=值; //将等号右边的值,赋值给等号左边的变量(存值)
变量定义流程
声明:数据类型 变量名;
例如:int a; //开辟整数变量空间
赋值:变量名=值;
例如:a=100; //将整数值赋给变量
注意:java是强类型语言,变量的类型必须与数据的类型一致。
变量的定义方式
声明变量的3种方式:
- 先声明,再赋值:【常用】
数据类型 变量名;
变量名 = 值; - 声明并赋值:【常用】
数据类型 变量名 = 值; - 多个同类型变量的声明和赋值:【了解】
数据类型 变量1, 变量2, 变量3=值3, 变量4, 变量5=值5;
数据类型
java中的变量具有严格的数据类型区分。(强类型语言)
在java语言中,任何一个值,都有其对应类型的变量。
java中的数据类型:
基本数据类型(整数)
类型 | 字节 |
byte | 1字节 |
short | 2字节 |
int | 4字节 |
long | 8字节 |
注意:int为整数的默认类型,如需为long类型赋值较大整数时,需在值的后面追加“L”,在结尾家L,大小写都可。
例如:long l1=2155555555L; //显示告知JVM,此值为long类型
基本数据类型(小数/浮点数)
类型 | 字节 |
float | 4字节 |
double | 8字节 |
注意:double为浮点数的默认类型,如需为float类型赋值时,需在值的后面追加“F”
基本数据类型(布尔)
类型 | 字节 | 取值范围 |
boolean | 1字节 | true/false |
可以直接赋值 true/false
也可以赋值一个结果为true/false的表达式
注意:java中的boolean不能参与算数运算
基础数据类型(字符)
类型 | 字节 | 取值范围 | 字符集 |
char | 2字节 | 0-65535 | Unicode字符集 |
Unicode中每个字符都对应一个二进制整数,可以使用多种方式赋值
- 字符赋值:
char c1='A';
通过‘’描述为字符赋值 - 整数赋值:
char c2=65;
通过十进制数65在字符集中对应的字符赋值 - 进制赋值:
char c3='\u0041';
通过十六进制数41在字符集中对应的字符赋值
转义字符
转义字符 | 描述 |
\n | 换行符 |
\t | 缩进(制表位) |
\ | 反斜线 |
’ | 单引号 |
" | 双引号 |
总结:基本数据类型
- 整型:byte、short、int、long
- 浮点:float、double
- 布尔:boolean
- 字符:char
引用数据类型(字符串)
类型 | 取值范围 | 字符编码 |
String | 任何""之间的字符 | Unicode字符序列 |
String类型的字面取值:
String str1="你好";
String str2="Hello";
运算符
算术运算符
算数运算符:两个操作数进行计算
操作符 | 描述 |
+ | 加、求和 |
- | 减、求差 |
* | 乘、求积 |
/ | 除、求商 |
% | 模、求余 |
算数运算符:一元运算符(只有一个操作数)
操作符 | 描述 |
++ | 递增,变量值+1 |
- - | 递减,变量值-1 |
赋值运算符
赋值运算符:等号右边赋值给等号左边
操作符 | 描述 |
= | 直接赋值 |
+= | 求和后赋值 |
-= | 求差后赋值 |
*= | 求积后赋值 |
/= | 求商后赋值 |
%= | 求余后赋值 |
关系运算符
关系运算符:两个操作数进行比较
操作符 | 描述 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
== | 等于 |
!= | 不等于 |
逻辑运算符
逻辑运算符:两个boolean类型的操作数或表达式进行逻辑比较
操作符 | 语义 | 描述 |
&& | 与(并且) | 两个操作数,同时为真,结果为真 |
两竖线 | 或(或者) | 两个操作数,有一个为真,结果为真 |
! | 非(取反) | 意为“不是”,真即是假,假即使真 |
三元操作符
操作符 | 语义 | 描述 |
? : | 布尔表达式?结果1:结果2 | 当表达式结果为真,获得结果1。当表达式结果为假,获得结果2 |
类型转换
自动类型转换
两种类型相互兼容。
目标类型大于源类型
package demo;
public class Test{
public static void main(String[] args){
short s=123;
int i=s;
}
}
boolean无法与其他类型进行转换!
强制类型转换
两种类型互相兼容。
目标类型小于源类型。
package demo;
public class Test{
public static void main(String[] args){
short s=123;
byte b=s; //类型转换失败,编译错误
}
}
package demo;
public class Test{
public static void main(String[] args){
short s=123;
byte b=(byte)s;//强制转换:(目标类型)值
}
}
强制类型转换规则:
- 整数长度足够,数据完整。
- 整数长度不够,数据截断。
- 小数强转整数,数据截断。
- 字符整数互转,数据完整。
- boolean的取值为true/false,不可与其他类型转换。
表达式
使用运算符连接的变量或字面值,并可以得到一个最终结果。
类型提升
自动类型提升
进行算数运算时:
- 操作数有一个为double,计算结果提升为double。
- 如果操作数中没有double,有一个为float,计算结果提升为float。
- 如果操作数中没有float,有一个为long,计算结果提升为long。
- 如果操作数中没有long,有一个为int,计算结果提升为int。
- 如果操作数中没有int,均为short或byte,计算结果仍旧提升为int。
特殊:任何类型与String相加(+)时,实为拼接,其结果自动提升为String。
控制台录入
程序运行中,可在控制台(终端)手动录入数据,再让程序继续运行。
导包语法:import 包名.类名;//将外部class文件的功能引入到自身文件中。
使用顺序:
- 导入 java.util.Scanner。
- 声明Scanner类型的变量。
- 声明Scanner类中对应的方法(区分类型):
.nextInt(); //获得整数
.nextDouble(); //获得小数
.next(); //获得字符串
.next().charAt(0); //获得单个字符
如果输入了不匹配的数据,则会产生java.until.InputMismatchException
实例:
//package 必须在源文件的首行
import java.util.Scanner; //引入外部文件
public class Demo{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.println("请输入内容:");
String str=input.next();
System.out.println(str);
}
}