赞
踩
概念:计算机中一块内存空间,是数据的基本存储单元。
变量的组成:
1. 变量名:用于获取变量中存储的数据,是变量的标识符(注意语法规范)。
2. 数据类型:用于约束变量所存储的数据种类。
3. 数据:变量中存储的值。
Java是一门强类型的语言,每种数据都有与之对应的数据类型 。
声明定义(创建变量)
语法:
数据类型 变量名;
为变量赋值
语法:
变量名 = 值; // 程序运行时将值赋值给左侧的变量,执行流程:先右后左。
*注意:没有赋值的变量不能使用,值必须与数据类型一致,否则编译错误。
如下:
// 数据类型:int 整数类型
// 声明定义一个int类型的变量
int a;
// 为a变量赋值
a = 150;
声明同时赋值
语法:
数据类型 变量名 = 值;
如下:
// 声明定义一个int类型的变量,赋值为10
int a = 10;
声明多个变量并赋值
语法:
数据类型 变量名1,变量名2,变量名3.....; 声明定义多个变量,数据类型相同
如下:
int a,b,c;// 一次性定义三个int类型的变量分别是a、b、c
声明时为变量赋值
语法:
数据类型 变量名1 = 值1,变量名2 = 值2...;
如下:
int a = 10, b = 20, c = 100;
1.基本数据类型
2.引用 数据类型
字符串:String
作用:存储多个字符
字面值:" "
如下:
String str = “ABCDEFG”;
String str2 = “HelloWorld”;
所占字节空间:变量的大小,原则上相同类型的变量所占字节空间越大能存储的数据越多。 数值范围:变量存储的数据的合法范围(上下限) 字面值:变量中存储的值有什么样的规范 补充: 1. 所有小数类型(float/double)都支持科学计数法的字面值 2. 科学计数法表示数字 3.5E2 等于3.5 * 10^2 3. 所有小数类型运算时只能存储近似值,最接近结果的值而不是精确的值(将来有类替代小数进行运算) 4. JDK10后支持var类型的变量,可以自动根据数据种类自动调整数据类型,var可以存储任何类型的数据 5. JDK13后支持文本域可以使用""" """ 标识字符区域,可以保留原有区域结构 String str = """ ABC BCD ABD """; 6. Java中所有的整数默认为int类型,小数默认为double类型 7. 整数字面值: 8进制:首位为0 16进制:首位为0x 2进制: 首位为0b 1.7后支持_分隔符,例:1_000_000
转义字符
作用:取消或赋予一个字符特殊的能力
转义字符:\
常见转义字符组合
转义字符 | 作用 |
---|---|
\" | 普通双引号(不再属于字符串字面值) |
\’ | 普通单引号(不再属于字符的字面值) |
\t | 跳格 |
\n | 换行 |
1. 两种类型必须兼容
byte-short-int-long-float-double-char 相互兼容
2. 目标类型>源类型
byte<short/char<int<long<float<double
byte a = 100;
//目标类型 源类型
int b = a;
如下:int 转换为 float
int a = 100;
float f = a; // 两种类型兼容,且目标类型>源类型 赋值成功。
2.强制类型转换:当两种类型兼容,目标类型<源类型时避免编译器的干预倒置的编译错误,由程序员自己保证数据的大小,承担转换失败的风险。
语法:
目标类型 变量名 =(目标类型)源类型;
如下:
int a = 100;
// byte vs int 两种类型兼容,目标类型<源类型
byte b = (byte)a; // 将int类型的变量a强制转换为byte类型,存储到byte变量中
强制类型转换的结果
package com.txw; public class TestConversion{ public static void main(String[]args){ //int a = 10; // 变量b的值与变量a的值一致,由变量a负责给变量b赋值 // int b = a; // byte a = 100; // byte -128~127 // long lo = 10000L; // String str="婷姐"; // int b = a; // byte类型的数据转换为int // float f = lo; // long---->float int a = 12345; // byte vs int 两种类型兼容,目标类型<源类型 byte b = (byte)a; // 将int类型的变量a强制转换为byte类型,存储到byte变量中 System.out.println( a ); System.out.println( b ); float f = 1.25F; // float vs int 两种类型相互兼容,目标类型<原类型 int c = (int)f; System.out.println( f ); System.out.println( c ); int d = 65; // int vs char 两种类型相互兼容,目标类型<源类型 char ch = (char)d; System.out.println( d ); System.out.println( ch ); } }
如图所示:
int a = 10;
int b = 20;
// 表达式 a+b 结果:30
int a = 10;
double b = 20.5;
System.out.println( a+b ); // 结果:30.5 (double类型)
如下:byte与long
byte a = 10;
long b = 2000L;
System.out.println( a+b ); // 结果:2010 (long类型)
如下:byte与byte(特殊)
byte b1 = 10;
byte b2 = 120;
System.out.println( b1+b2 ); // 结果:130(int类型)
如下:任何类型与String(特殊)
int a = 10;
String str = "Hello";
System.out.println( a + str ); // 结果:10Hello(String 类型)
提升规则:
byte/short/char<int<long<float<double<String
byte/short/char之间运算时结果均为int。
其余数据类型运算时结果偏向较大数据类型。
算数运算符
int a = 10;
int b = 2;
String str = "Hello"
运算符 | 作用 | 例 | 结果 |
---|---|---|---|
+ | 加法运算/字符串拼接 | a+b a+str | 12 10Hello |
- | 减法运算 | a-b | 8 |
* | 乘法运算 | a*b | 20 |
/ | 除法运算 | a/b | 5 |
% | 取余(模运算) | a%b | 0 |
赋值运算符
int a = 10;
int b = 2;
运算符 | 作用 | 例 | 结果 | 表达式结果 |
---|---|---|---|---|
= | 右侧数值赋给左侧的变量 | a = 20 | a的值为20 | 20 |
+= | 用变量本身与另一个变量相加求和之后再赋值 | a+=b 等同于 a = a+b | a的值为12 | 12 |
-= | 用变量本身与另一个变量相减之后再赋值 | a-=b等同于 a = a-b | a的值为8 | 8 |
*= | 用变量本身与另一个变量相乘之后再赋值 | a*=b等同于 a = a*b | a的值为20 | 20 |
/= | 用变量本身与另一个变量相除之后再赋值 | a/=b等同于 a = a/b | a的值为5 | 5 |
%= | 用变量本身与另一个变量取余之后再赋值 | a%=b等同于 a = a%b | a的值为0 | 0 |
++ | 变量本身+1 | ++a 等同于 a + 1 a++ 等效于 a + 1 | a的值为11 a的值为11 | 11 10 |
– | 变量本身-1 | –a等同于a - 1 a–等效于a - 1 | a的值为9 a的值为9 | 9 10 |
面试题:
int a = 5;int b = 2;a+=(a++)+(++a)-(b--)+(++b); //a=a+(a++)+(++a)-(b--)+(++b); // 表达式结果: 变量的变化 a =5 b = 2//a = 5+5+(++a)-(b--)+(++b); (a++)结果为5 a变量6 // a = 5+5+7-(b--)+(++b); (++a)结果为7 a变量7//a = 5+5+7-2+(++b); (b--)结果为2 b变量1//a = 5+5+7-2+2; (++b)结果为2 b变量2//17每一步都要记录表达式的结果与表达式对变量的影响再进行下一步运算
关系运算符
作用:判断两个变量之间的关系,结果均为boolean类型
int a = 10;int b = 20;
运算符 | 作用 | 例 | 结果 |
---|---|---|---|
> | 大于 | a > b | false |
< | 小于 | a < b | true |
== | 等于 | a == b | false |
!= | 不等于 | a != b | true |
>= | 大于或等于 | a >= b | false |
<= | 小于或等于 | a <= b | true |
逻辑运算符
作用:用于多条件联合判断,结果均为布尔类型
int a = 10;int b = 20;int c = 2;
运算符 | 作用 | 例 | 结果 |
---|---|---|---|
|| | 逻辑或,表示或者 两个条件(表达式)有一个为true时结果为true | a<b || a>c a>b || a==c | true false |
&& | 逻辑与,表示并且 两个条件必须同时为true结果为true | a<b && a>c a>b && a>c | true false |
! | 逻辑非,取表达式结果相反的值(颠倒是非) | !(a>b) | true |
||、&&为短路运算符:当第一个表达式执行后就能决定整体结果时,不在执行后续表达式|、&为非短路运算符:无论之前的表达式结果能不能决定整体结果,所有表达式必须执行一次
三目运算符
作用:根据条件的结果返回不同的结果
语法:
布尔表达式?结果1:结果2;布尔表达式为true 返回结果1布尔表达式为false 返回结果2
布尔表达式即结果为boolean类型的表达式。
如下:
int a = 10;int b = 20;System.out.println( a>b?"Hello":"World" ); // 由于a>b为false,返回结果2所以打印World
System.out.println( a<b? a+10:b+10 ); // 由于a<b为true,返回结果1所以打印a+10后的结果 20
如下:
// 商品价格
double price = 80D; // 设计程序完成需求:超市打折满100-20
// 根据活动规则计算应付款
// 如果 商品价格>=100 应支付 原价-20 否则 按照原价支付
double realPrice = price>=100?price-20:price;
System.out.println("应支付"+ realPrice );
位运算符
运算符 | 作用 |
---|---|
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
~ | 按位非 |
<< | 向左位移 |
>> | 向右位移 |
>>> | 无符号向右位移 |
public class Test {
public static void main(String[] args) {
int a = 5;
int b = (a ++) + (--a ) + (++a );
System.out.println(a);
System.out.println(b);
}
}
答:a=6 b=16
a++ :先赋值再加1 (a++) = 5; a = 6;
–a :先-1再赋值 a-1=5; (–a) = 5
++a :先加1再赋值 a+1=6; (++a) = 6;
5+5+6=16。
11.仔细分析以下程序,说出程序的及最终打印的结果。
public class Test {
public static void main(String[] args) {
int a = 3, b = 7 , c=1, result;
result = (a < b ) ? a : b;
result = (result < c) ? result : c;
System.out.println(result);
}
}
答:result=1
12. 编程:定义一个 int 类型的变量 n,同时对 n 赋值一个三位的数据,分别获取 n 的个位、十 位、百位上的数值,并分别打印输出。
答:代码如下:
public class Test {
public static void main(String[] args) {
int n = 666;
int a = n / 100; // 获取百位数
int b = n / 10 % 10; // 获取十位数
int c = n % 10; // 获取个位数
System.out.println(a);
System.out.println(b);
System.out.println(c);
}
}
13.编程:定义一个 int 类型的变量 a,请用表达式判断 a 是否为偶数,将结果打印输出。
答:代码如下:
public class Test {
public static void main(String[] args) {
int a = 120;
String str = (a % 2 == 0) ? "是偶数" : "不是偶数";
System.out.println(str);
}
}
第二种代码如下:
import java.util.Scanner;
public class Test{
public static void main(String[]args){
// 1. 创建Scanner对象
Scanner sc = new Scanner(System.in);
// 店长推荐:加入提示语句
System.out.println("请输入一个整数,按Enter键确定:");
// 2. 根据需要的数据选择相应的接收方法
int a = sc.nextInt();
// 判断a是否为偶数,偶数:都能被2整除,除2余数为0
System.out.println( a%2==0 );
}
}
14.编程:定义两个 int 类型的变量 m 和 n,请用表达式判断 n 是否为 m 的因子,将结果存储 在对应类型的变量中,并将结果打印输出。
答:代码如下:
public class Test {
public static void main(String[] args) {
int m = 12, n = 5;
boolean b = m % n == 0;
System.out.println(b);
}
}
15.编程:定义类型 int 类型的变量 a 和 b,用代码实现将 a 和 b 变量中数据互换,将交换后的 内容打印输出。
答:代码如下:
public class Test {
public static void main(String[] args) {
int a = 100;
int b = 200;
int t = a;
a = b;
b = t;
System.out.println(a);
System.out.println(b);
System.out.println(t);
}
}
第二种代码如下:
public class Test{ public static void main(String[]args){ /* 编程:定义类型 int 类型的变量 a 和 b,用代码实现将 a 和 b 变量中数据互换,将交换后的 内容打印输 */ int a = 123; int b = 456; // a存b的值 // b存a的值 int c = a; // 定义中间变量 将a的值暂存到c变量中,避免被覆盖后找不到 a = b; // 将b的值赋给a,覆盖掉a原有的值 a = 456 b = 456 b = c; // 将c的值赋给b,覆盖掉b原有的值 a = 456 b = 123 System.out.println( a +"\t" + b ); } }
总结如图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。