【跟我学Java就对了!!!】:数据类型(变量和常量)
1.变量和类型
(1)变量
变量就和c语言的概念是一样的。变量在程序运行时,数值是可以改变的。
什么类型的变量就可以储存对应类型的数据,比如int a = 10;
a是一个变量,a储存了整型数据。
①作用域
要找作用域,就找{}
找它在哪个{}里面,它的作用域就是那个{}包含的内容。
②命名规则
a.以数字、字母、下划线、$组成。
b.变量名采用小驼峰形式命名(第二个单词开始首字母大写 ,比如maxNumSize)。
c.不能与关键字同名。
d.数字不能开头。
e.变量名是区分大小写的(num和Num不是同一个变量)
注意:
变量定义的时候,如果不赋值,是没办法打印的,不像c语言,c语言如果不给值,默认是0,但java不一样,会报错。
(2)内置类型
java所有类型的大小都和平台没有关系。所有类型的赋值都不能超过它所对应的范围。
①int【integer】
在java当中,不管我们是多少位的操作系统,int都是4个字节。java具有跨平台和可移植性,java的代码是跑在jvm上的。所以我们在Windows写的代码,也可以在mac跑。也就是我们的.class文件,放到任何电脑,都可以直接跑起来。
Ⅰ.表示范围:
在java当中,所有的数都是有符号数。
public class test {
public static void main(String[] args) {
int a = Integer.MAX_VALUE;
System.out.println(a);
int b = Integer.MIN_VALUE;
System.out.println(b);
}
}
MAX_VALUE和MIN_VALUE是什么值呢,我们只需要用ctrl+鼠标左键点击MAX_VALUE就可以看到了。
这是我们打印输出的结果:
如果超过这个最大限度会发生什么呢?
int a = Integer.MAX_VALUE+1;
System.out.println(a);
int b = Integer.MIN_VALUE-1;
System.out.println(b);
结果是这样的:
正数最大值加成了负数最小值。负数减成了最小值。
可见我们的int是这样形式的:
Ⅱ.int类型的转换:
a.int如何转换成string呢?
public class test {
public static void main(String[] args) {
int b = 10;
String a = b+"";
System.out.println("a="+a);
String c = String.valueOf(b);
System.out.println("c="+c);
}
}
输出的结果是这样的:
②long【Long】
相当于int的加强版。
大小:8byte。(1位符号位,63位数据位)。
long a = Long.MAX_VALUE;
System.out.println(a);
long b = Long.MIN_VALUE;
System.out.println(b);
结果为:
用long定义的时候,我们一般在后面加一个L。
③byte【Byte】
字节类型是我们c语言当中没有的。byte是1个字节,8位,它可以表示正负数,第一位是符号位,接下来就是数据位。byte的取值范围是-128~127。所以我们赋值的时候一定要注意不能超过这个范围。
public class test {
public static void main(String[] args) {
byte b = 10;
byte a = 11;
byte c = a+b;
}
}
这里居然报错了!
那我们这样呢?
这样又没有问题。
这是为什么呢?
b和a都是变量,编译器不知道变量相加会不会超过byte的范围,所以就报错了。还有一点原因就是,计算机在存储数据,存在整型提升(小于4byte都会被整型提升),就是都以整型的方式进行运算,我们的a和b存储到计算机里面的时候,都变成整型了,都变成4个字节的了,而我们的byte只有1个字节,所以分析byte c = a+b;
我们想把大人塞到小孩子衣服里面,这是不可能的。而我们byte = 10+11;
这样写的时候,10和11是常量,在编译的时候直接会被替换成21了。
这样也是不行的。
整型提升的意义就是提高运算速率。
④short【Short】
大小:2byte。表达范围是-32768~32767。
⑤float【Float】
public class test {
public static void main(String[] args) {
float a = 12.5;
}
}
在c语言中我们这样做是可以编译的,但java是比较安全的语言。所以我们这样定义会出现报错。
在java里,12.5这种小数都会 被归为double类。double是8个字节,而float是4个字节。
所以我们定义的时候,要这样定义:
float a = 12.5f;
或者是进行强制类型转化:
float a = (float)12.5;
这两种方式都可以解决上述问题
⑥double【Double】
在计算机里,小数的精度是存在问题的。
所以当我们写如下程序时,会出现问题。
public class test {
public static void main(String[] args) {
double a= 1.1;
double b = 1.1;
double c = a*b;
System.out.println(c);
}
}
会出现如下结果:
⑦char【Character】
大小2byte。java当中char一定表示正数。
我们来写一段代码:
public class test {
public static void main(String[] args) {
char ch ='a';
System.out.println(ch);
char ch1 = '高';
System.out.println(ch1);
char ch2 = 98;
System.out.println(ch2);
}
}
输出的结果是这样的:
我们知道,汉字是占2个字节的。所以char在java里面是2个字节,这一点和c语言不太一样。
当我们输入数字的时候 ,输出的仍是字符。
那我们再试试输入负数呢?
char ch =-8;
这样会出现报错的。
⑧boolean【Boolean】
布尔类型在java中要么取true,要么取false。**不是1或者0!**对于boolean的大小,没有明确规定。有的说是1bit,有的说是1byte。
c语言可没有布尔类型,c++、java有。
int 类型是不可以赋值给boolean类型的。
(3)引用类型
①String
String str = "zzy-zbossz";
Ⅰ.拼接字符串
public class test {
public static void main(String[] args) {
String str = "zzy";
String str2 = "like";
String str3 = "phy";
String str4 = str+str2+str3;
System.out.println(str4);
System.out.println("zzy"+" "+"like"+" "+"phy");
}
}
输出的结果是这样的:
还有一个就是字符串+数字,是把数字当做字符来凭借的,所以不会进行运算。
数字+字符串,是可以将前面的数字进行运算的。
Ⅱ.类型转换
a.String转换成int
方法一:
public class test {
public static void main(String[] args) {
String a = "11";
int b = Integer.valueOf(a);
System.out.println(b);
}
}
输出结果是这样的:
注意:
这里的a必须要是全数字的字符串。
方法二:
public class test {
public static void main(String[] args) {
String a = "11";
int b = Integer.parseInt(a);
System.out.println(b);
}
}
结果是这样的:
2.常量
(1)final关键字修饰的常量
final int b = 20;
这里的final相当于c语言中的const。final修饰的常量只能初始化一次,后续不能改。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App