JAVA基础day01:变量、数据类型、运算规则
变量
代码示例
class VariableTest {
public static void main(String[] args) {
//变量的定义
int myAge = 25;
//变量的实用
System.out.print(myAge);
//变量的定义
int myNumber;
//变量的赋值
myNunber = 1002;
System.out.print(myNumber);
//System.out.print(myClass);
//该行将编译错误,myClass变量不在次作用域{}内;
//int myAge = 23;
//该行将编译错误,不能定义重名变量
}
public void method(){
int myClass = 1;
}
}
变量的概念
- 内存中的一个存储区域
- 该区域的数据可以在同一个类型范围内不断变化
- 变量是程序中最基本的存储单元。包含变量类型、变量名和存储的值
变量的作用
- 用于在内存中保存数据
使用变量注意点
- Java中每个变量必须先声明再使用
- 变量都定义在其作用域{}内,出了作用域就失效了
- 同一个作用域内不可声明两个同名的变量
变量的分类
按数据类型分为:
- 基本数据类型(primitive type)
- 数值型
- 整形:byte, short, int, long
- 浮点型:float, double
- 字符型:char
- 布尔型:boolean
- 数值型
- 引用数据类型(reference type)
- 类:class
- 接口:interface
- 数组:array
按声明位置
- 在方法体外,为成员变量
- 在方法体内,为局部变量
代码示例
class VariableTest1 {
public static void main(String[] args) {
//1. 整型:byte(1字节=8bit),short(2字节),int(4字节),long(8字节)
//byte范围:-128~127
byte b1 = 20;
byte b2 = -127;
//byte = 128; 编译不通过,超出范围
System.out.print(b1);
System.out.print(b2);
//声明long型变量,必须以“l或L”结尾
//通常定义整型时用int
short s1 = 128;
int i1 = 123456;
long l1 = 12345678912L;
System.out.print(l1);
//2.浮点型:float(4字节),double(8字节)
//表示的数值范围:double>float>long
//定义float型时,变量要以“f或F”结尾
float f1 = 22.5f;
System.out.println(f1);
//通常定义浮点型为double型;
double d1 = 22.6;
System.out.println(d1 + 1);
//3.字符型:char(1字符 = 2字节)
//定义char型变量,使用一对''
char c1 = 'a';
System.out.println(c1);
char c3 = ‘王’;
System.out.println(c3);
//编译不通过,ab为两个字符,char只能接受一个。
//char c2 = 'ab';
//使用转义字符
char c4 = '\n';
char c5 = '\t';
System.out.println("hello" + c4);
System.out.println("world");
// \n表示换行,所以,不加c4输出:helloworld,加c4输出:
//hello
//world 要输出”\n“本身,则使用"\\n"
// \t表示制表符,加c5输出:hello world
char c6 = '\u0043';
System.out.println(c6);
// \u为使用Unicode值来表示字符型常量,0043对应c,则输出:c
//4.布尔型:boolean
//只能取:true、false
boolean bb1 = true;
System.out.println(bb1);
//输出ture
boolean isMarried = true;
if(isMarried){
System.out.println("你已经\"结婚\"了!\n你不能参加单身party!");
//【\"】输出【"】本身
}else{
System.out.println("欢迎参加单身party!");
}
}
}
数据类型间的运算规则(除了boolean)
自动类型提升
- 容量小的与容量大的数据类型做运算时,结果自动提升为容量大的数据类型
- 容量大小指的是表示数的范围的大小,不是所占内存的大小。
- byte、char、short --> int --> long --> float --> double
- 特别的,当byte、char、short三种类型做运算时,结果为int
class VariableTest2 {
public static void main(String[] args) {
byte b1 = 2;
int i1 = 129;
//编译不通过
//byte b2 = b1 + i1;
int i2 = b1 +i1;
long l1 = b1 + i1;
System.out.println(i2)
}
强制类型转换
强制将大容量数据类型转为小容量数据类型
class VariableTest3 {
public static void main(String[] args) {
double d1 = 12.3;
//int i1 = d1; 报错
int i1 = (int)d1;
System.out.println(i1);//输出12,精度损失
long l1 = 122;
short s2 = (short)l1; //没有精度损失
int i2 = 128;
byte b = (byte)i2; //-128
}
- 强制类型转换符:()
- 可能导致精度损失;12.3–>12; 12.999–>12
String类型变量的使用
- String不是基本数据类型,属于引用数据类型
- 使用方式与基本数据类型一致。例如:String str = “abcd”;
- 一个字符串可以串接另一个字符串,也可以直接串接其他类型的数据。
class StringTest {
public static void main(String[] args) {
String s1 = "hello world!";
String s2 = "hello JAVA!";
String s3 = s1 + s2;
System.out.println(s3);
// hello world!hello JAVA!
int myNumber = 123;
String s4 = "学号:"
String info = s4 + myNumber;
System.out.println(info);
// 学号:123
//*****************************
//练习
char c = 'a'; //97 ; A:65
int num = 10;
String str = "hello";
System.out.println(c + num + str); //107hello
System.out.println(c + str + num); //ahello10
System.out.println(c + (num + str)); //a10hello
System.out.println((c + num) + str); //107hello
System.out.println(str + num + c); //hello10a
//*****************************
//String str1 = 123; //编译不通过
String str1 = 123 + "";
System.out.println(str1); //输出字符串“123”
//str-->int?
//int num1 = str1; //错误
//int num1 = (int)str1; //错误
int num1 = Integer.parseInt(str1);
System.out.println(num1); //输出整型123
}
}