目录
一:字面常量
例如,将下面这些字面常量进行输出:
public class HelloIDEA{
public static void main(String[] args) {
System.out.println("hello world!");
System.out.println(100);
System.out.println(3.14);
System.out.println('A');
System.out.println(true);
}
}
运行结果如下:
二:数据类型
2.1数据类型的分类
2.2详解基本数据类型
基本数据类型一共有8种:
![](https://img-blog.csdnimg.cn/0e6502448eae4b94a292d702575c16db.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55-l6KGMJg==,size_20,color_FFFFFF,t_70,g_se,x_16)
注意:
1.不论是在16位系统还是32位系统,int都占4个字节,long都占8个字节。
2.java中没有类似C语言中计算内存大小的关键字sizeof。
2.整形和浮点型都是带有符号的。
3.整型默认为int型,浮点型默认为double型。
三:变量
3.1定义变量的语法格式
数据类型 变量名=初始值;
public class HelloIDEA{
public static void main(String[] args) {
int a = 10; // 定义整形
double d = 3.14;
char c = 'C';
boolean b = true;
System.out.println(a); System.out.println(d); System.out.println(c); System.out.println(b);
System.out.println("-------------------");
// 注意:在一行可以定义多个相同类型的变量
int a1 = 10, a2 = 20, a3=30;
System.out.println(a1); System.out.println(a2); System.out.println(a3);
}
}
运行结果如下:
3.2整型变量
public class HelloIDEA{
public static void main(String[] args) {
//1.最简单的定义
int a = 10;
//System.out.println(a);
//2.int型变量所能表示的范围
System.out.println("int型变量所能表示的范围");
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
//3.long定义的长整型变量
long b=10;//等价于long b=10L;
//System.out.println(b);
//4.long型变量所能表示的范围:这个数据范围远超过 int 的表示范围. 足够绝大部分的工程场景使用.
System.out.println("long型变量所能表示的范围:");
System.out.println(Long.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
//5.short 定义的短整型变量
short d = 10;
//System.out.println(d);
//5.short型变量所能表示的范围:
System.out.println("short型变量所能表示的范围:");
System.out.println(Short.MIN_VALUE);
System.out.println(Short.MAX_VALUE);
//6.byte定义e的字节型变量
byte e = 10;
//System.out.println(e);
//7.byte型变量所能表示的范围:
System.out.println("byte型变量所能表示的范围:");
System.out.println(Byte.MIN_VALUE);
System.out.println(Byte.MAX_VALUE);
}
}
运行结果为:
总结:
- byte:8位,最大存储数据量是2的8次方减1,数据范围是-128~127之间。
- short:16位,最大数据存储量是2的16次方减1,数据范围是-32768~32767之间。
- int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
- long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
![](https://img-blog.csdnimg.cn/e0bcc1cce4d540edbbc84ec3965c95ec.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55-l6KGMJg==,size_20,color_FFFFFF,t_70,g_se,x_16)
疑问:什么是包装类型?
简单来讲,Java是一个面向对象的语言,基本类型并不具有对象的性质,为了与“其他对象“接轨,于是就出现了包装类型,它相当于将基本类型“包装起来”,使得它具有了对象的性质,并且为其添加了属性和方法,丰富了基本类型的操作。“包装类型”相当于是“基本类型”的plus版本。
3.3浮点型变量
public class HelloIDEA{
public static void main(String[] args) {
double a=23;
System.out.println(a);
float b=3.7f;
System.out.println(b);
}
运行结果为:
总结:
![](https://img-blog.csdnimg.cn/cae58920dd254d23847a42ad1dacdc0c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA55-l6KGMJg==,size_20,color_FFFFFF,t_70,g_se,x_16)
3.4字符型变量
public class HelloIDEA{
public static void main(String[] args) {
char c1 = 'A'; // 大写
char c2 = '5'; // 数字
System.out.println(c1);
System.out.println(c2);
char c3 = '白';
System.out.println(c3);
}
}
运行结果如下:
注意:
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值。
2. 计算机中的字符本质上是一个整数.。在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文。
3. char的包装类型为Character。
3.5布尔型变量
public class HelloIDEA{
public static void main(String[] args) {
boolean a = true;
System.out.println(a);
a = false;
System.out.println(a);
}
}
注意:
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假。|
2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法。
3. Java虚拟机规范中,没有明确规定boolean占几个字节,也没有专门用来处理boolean的节码指令。
4. boolean的包装类型为Boolean。
3.6类型转换
3.6.1自动类型转换实例
public class HelloIDEA{
public static void main(String[] args) {
int a = 100;
long b = 10L;
b = a; // a和b都是整形,a的范围小,b的范围大,当将a赋值给b时,编译器会自动将a提升为long类型
a = b; // 编译报错,long的范围比int范围大,会有数据丢失,不安全
float f = 3.14F;
double d = 5.12;
d = f; // 编译器会将f转换为double,然后进行赋值
f = d; // double表示数据范围大,直接将double交给float会有数据丢失,不安全
byte b1 = 100; // 编译通过,100没有超过byte的范围,编译器隐式将100转换
byte b2 = 128; // 编译失败,128超过了byte的数据范围,有数据丢失
}
}
3.6.2强制类型转换实例
public class HelloIDEA{
public static void main(String[] args) {
int a = 10;
long b = 100L;
b = a; // int-->long,数据范围由小到大,隐式转换
a = (int)b; // long-->int, 数据范围由大到小,需要强转,否则编译失败
float f = 3.14F;
double d = 5.12;
d = f; // float-->double,数据范围由小到大,隐式转换
f = (float)d; // double-->float, 数据范围由大到小,需要强转,否则编译失败
}
}
注意:
在所有八种数据类型中,只有boolean类型不能转换,只能是true或者false。除此之外其他七种类型之间都可以进行转换。
3.7 类型提升
不同类型的数据之间相互运算时,数据类型小的数据会被提升为数据类型大的。
1.int与long之间:int会被提升为long;
public class HelloIDEA{
public static void main(String[] args) {
int a = 10;
long b = 20;
long d = a + b; // 编译成功:a + b==>int + long--->long + long 赋值给long
}
}
2.byte与byte的运算
public class HelloIDEA{
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = a + b;
System.out.println(c);
}
}
猜测一下这段代码的输出?你是不是会以为能够正常编译通过?错!
byte 和 byte 都是相同类型, 但是出现编译报错. 原因是, 虽然 a 和 b 都是 byte, 但是计算 a + b 会先将 a 和b 都提升成 int, 再进行计算, 得到的结果也是 int, 这时赋给 c, 就会出现上述错误。
由于计算机的 CPU 通常是按照 4 个字节为单位从内存中读写数据. 为了硬件上实现方便, 诸如 byte 和 short 这种低于 4 个字节的类型, 会先提升成 int, 再参与计算。
正确写法如下:
public class HelloIDEA{
public static void main(String[] args) {
byte a = 10;
byte b = 20;
byte c = (byte)(a + b);
System.out.println(c);
}
}
运行结果如下:
四:字符串类型
4.1基本实现
与C++类似,java中也支持用string定义字符串。
public class HelloIDEA{
public static void main(String[] args) {
String s1 = "hello";
String s2 = "world";
System.out.println(s1);
System.out.println(s2);
System.out.println(s1+s2);
}
}
运行结果如下:
4.2int和String的相互转化
4.2.1int转化成String
public class HelloIDEA{
public static void main(String[] args) {
int num = 100;
// 方法1
String str1 = num + "";
System.out.println(str1);
// 方法2
String str2 = String.valueOf(num);
System.out.println(str2);
//方法3
String str3=Integer.toString(num);
System.out.println(str3);
}
}
运行结果如下:
4.2.2String转化成int
//Sting--->int
public class HelloIDEA{
public static void main(String[] args) {
String str = "100";
int num1= Integer.parseInt(str);
int num2= Integer.valueOf(str).intValue();
System.out.println(num1);
System.out.println(num2);
}
}
运行结果如下:
本课内容结束!