2变量的使用
2.1按数据类型分类
public class VarTest2{
public static void main(String[] args){
//整型 byte short int long
byte b = 127; //表数范围 -128 ~ 127
long l = 123789L; //long类型常量后面需要加"l"或者"L",注意一般加大L
//浮点型 float double
float f = 12.3f; //float类型常量后面需要加"f"或"F"
double d = 12.9;
double d2 = .5; // .5 等于 0.5
//字符型 char
char c = 'a';
c = '中';
c = 'ふ';
c = '\n';
//c = 'ab'; //只能存放一个字符
c = '\u0096';
System.out.print("aaaaaaaaaaaa");
System.out.print(c);
System.out.print("bbbbbbbbbbbb");
//布尔型 :只有两个值 true 或 false
boolean boo = false;
System.out.println(boo);
System.out.println("-----------------------默认常量--------------------");
//java的整型常量默认为 int 型
byte n = 15; //底层对15进行了强制类型转换所以可以直接赋值
long n2 = 123564654654654564L;
//Java 的浮点型常量默认为double型
float num1 = 12.3f;
}
}
2.2定义变量的格式:
格式: 变量的类型 变量名 = 变量值
例:
//声明一个变量并赋值
int number = 20;
//声明一个变量
int number2;
//给变量赋值
number2 = 30;
System.out.println(number2);
//变量可以被多次赋值后一次赋值覆盖前一次的值
number2 = 50;
//int number2 = 100; 编译错误 - 同一作用域内的变量名不可重复
int a,b,c; //同时声明了三个变量
a = b = c = 10; //同时给三个变量赋值
int aa = 10,bb = 20,cc = 30;
2.3变量使用的注意点:
3变量间的运算
3.1基本数据类型间运算
一 基本数据类型之间的运算(7种 不包括(boolean))自动类型提升:小容量和大容量的变量作运算,用大容量的类型来接收数据。
public class VarTest3{
public static void main(String[] args){
//思考?两个不同的类型做运算,结果用什么接收。
short s = 123;
int a = 100;
a = a + s; //short和int做运算-使用int类型变量来接收
float f = 12.3f; //float - 4字节
long ll = 123L; //long - 8字节
f = f + ll;
System.out.println("--------------------------");
//注意 : byte short char三者之间做运算先提升为int类型
byte number = 100;
short number2 = 200;
int number3 = number + number2;
char c = 'a';
int aa = 1;
number3 = c + aa;
System.out.println(number3);
}
}
2.强制类型转换:自动类型提升的逆过程。
public class VarTest4{
public static void main(String[] args){
/*
强制类型可能会损失精度
*/
int a = 128;
byte b = (byte)a;
System.out.println(b);
double d = 12.5;
int a2 = (int)d;
System.out.println(a2);
System.out.println("---------------------------");
int a3 = 12;
byte b2 = (byte)a3;
System.out.println(b2);
System.out.println("---------------------------");
int a4 = 1000;
long ll2 = (long)a4;
System.out.println(ll2);
}
}
注意:
3.2String与基本数据类型(8种)间运算
字符串的赋值方式:
public class VarTest5{
public static void main(String[] args){
//String类型的声明和赋值方式
String str = "hello java";
String str2 = new String("aaaa"); //这种方式先了解即可
System.out.println(str);
System.out.println(str2);
System.out.println("--------------------------------------");
int a = 10;
String str3 = str + a;
System.out.println(str3);
boolean boo = true;
String str4 = str + boo;
System.out.println(str4);
System.out.println("--------------------------------------------");
int number = 12;
char c = 'a';
String str5 = "cangjie";
System.out.println(str5 + number + c); // cangjie12a
System.out.println(number + c + str5); //109cangjie
System.out.println(str5 + (number + c)); //cangjie109
System.out.println(number + str5 + c); //12cangjiea
System.out.println("--------------------------------------------");
float ff = 12.5f;
String str11 = ff + "";
System.out.println(str11);
}
}
说明:
4、进制
4.1进制的表示
4.2二进制:
什么是原码,反码,补码?
1、正数的原码,反码,补码相同
2、负数的
public class JinZhiTest{
public static void main(String[] args){
int a = 0B10;
a = 010;
a = 0x10;
System.out.println(a);
}
}
5、运算符
算术运算符
说明:前++后++前—后—的区别是什么?代码:
//除
int number = 10;
int number2 = 4;
int number3 = number / number2; //2
double number4 = number / number2; //2.0
number4 = (number + 0.0) / number2; //2.5
number4 = (double)number / number2; //2.5
number4 = (double)(number / number2); //2.0
//使用场景 : 判断是否可以整除。 比如 x % 5 == 0 如果条件满足那么就可以整除
System.out.println(0 % 2); //0
System.out.println(1 % 2); //1
System.out.println(2 % 2); //0
System.out.println(3 % 2); //1
System.out.println(4 % 2); //0
System.out.println(5 % 2); //1
System.out.println(6 % 2); //0
System.out.println("-------------------------------------------");
//思考?取模结果的正负和什么有关? 和被模数有关。被模数是正的结果就为正,被模数是负的结果就为负
System.out.println(-3 % 2); // -1
System.out.println(3 % -2); //1
System.out.println(-3 % -2); //-1
赋值运算符
相关面试题:
①编译不通过,因为short类型变量运算符时会先自动类型提升为int类型
②编译可以通过,不会改变原来的数据类型
比较运算符(关系运算符)
说明:结果都是boolean类型
逻辑运算符
说明:
特点 :
位运算符
说明:
三元运算符
格式 : (条件表达式)?表达式1 : 表达式2
//需求?求三个数中的最大值
int aa,bb,cc;
aa = 10;
bb = 20;
cc = 30;
int maxNumber = (aa > bb)? aa : bb;
maxNumber = (maxNumber > cc)? maxNumber : cc;
System.out.println(maxNumber);
代码 :
6、数据的交换
public class Demo {
public static void main(String[] args) {
//方式一 :
/*
优点:容易理解。基本数据类型和引用数据类型都可以采用如下方式
缺点:多创建一个变量。占用了内存。
*/
int temp = a;
a = b;
b = temp;
//方式二:
/*优点 : 效率高
缺点 :可能会造成精度损失(溢出),只能用于(基本数据类型)数值
*/
a = a + b; // a = (a + b)
b = a - b; // b = (a + b) - b;
a = a - b; // a = (a + b) - b(a);
//方式三
a = a ^ b; //a (k) = a ^ b
b = a ^ b; // k(a ^ b) ^ b
a = a ^ b; // k(a ^ b(a)) ^ b
System.out.println("a=" + a + " b=" + b);
}
}