一、变量详解
基本数据类型:
基本数据类型(Primitive Data Types)是指不能被进一步分解的简单数据类型。它们是构建Java程序的基石,用于存储简单的数据值。
Java定义了八种基本数据类型:
1. 布尔类型 (boolean):用于表示真 (true) 或假 (false)。布尔类型通常用于逻辑运算。
2. 字符类型 (char):用于表示单个Unicode字符,如 'a'、'中' 或 '\n'。字符类型使用单引号' ' 来定义。
3. 整数类型 (int):用于表示整数(没有小数部分的数)。整数类型有多种变体:
byte:8位整数,取值范围从-128到127。
short:16位整数,取值范围从-32,768到32,767。
int:32位整数,取值范围从-2^31到2^31-1。这是Java中最常用的整数类型。
long:64位整数,取值范围从-2^63到2^63-1。当需要表示更大范围的整数时使用。
4. 浮点类型 (float 和 double):用于表示带有小数部分的数。
float:32位浮点数,它在单精度32位IEEE 754浮点数标准上实现。
double:64位浮点数,它在双精度64位IEEE 754浮点数标准上实现。由于其较大的范围和精度,` double`是科学计算和金融等需要高精度的领域的首选。
package com.itchinajie.veriable;
public class VariableDemo2 {
public static void main(String[] args) {
/*1.认识基本的数据类型
* 整型(int byte short long)、浮点型(float double)、
* 字符型(char)、布尔型(boolean)
* 至少要清楚byte类型的范围(—128~127)*/
int a = 16;
byte a2 = 127;
//byte a3 = 128;(注意越界了)
//long a3 = 424242244444;
// 注意:随便写一个整型字面量默认是int类型的,
// 424242244444虽然没有超过10ng的范围
// ,但是超过了本身int类型的范围
long a4 = 424242244444L;//数字后加L/l就可以了
///long b = 6427349187;(注意整型默认int类型)
double b =9.99;
//float b2 = 9.99;
// 注意:随便写小数字面量,默认是double,
float b3 = 9.99F;// 如果希望小数是float,后面加上F/f
char c1 ='a';
char c2 ='中';
//char c3 = '中国';只能存一个字符
//boolean d1 = ture;
//boolean d2 = false;必须有输出
/*拓展;一个字符串(string)*/
String name = "我爱中国";
System.out.println(name);
System.out.println(c2);
System.out.println(c1);
System.out.println(a2);
}
}
引用数据类型:
引用数据类型包括对象(Object)、数组(Array)和字符串(String)。
*对象:Java中的对象是由类(Class)创建的实例。对象包含数据(属性)和方法(函数)。对象在内存中以堆栈的形式存储,因此,对象可以被看作是一种特殊的数据类型。
*数组:数组是一种特殊的数据结构,它由一组相同类型的元素组成。数组中的元素可以通过下标*访问。Java中的数组类型以"[ ]"表示,例如int[ ]、String[ ]等。
*字符串:Java中的字符串类型是String,它是一个不可变的引用类型。字符串在内存中以字符数组的形式存储,因此,字符串的长度在创建时就已经确定。
package com.itchinajie.veriable;
public class VariableDemo1 {
public static void main(String[] args) {
//您已学习了注释、字面量和变量,请展示
/*1.注释
* 单行注释
* 多行注释
* 文档注释*/
/*2.字面量
* \n换行
* \t一个Tab缩进
* 怎么可能,字符用单引号,双引号围起来,整数和小数
* 666别忘了后面加点哦
* 还有空字符*/
System.out.println(666);
System.out.println(99.6);
//数字和字母不用加引号呦System.out.println('666');
System.out.println('六');//单引号只能单字符
System.out.println("\t");
System.out.println("非常六呀");//双引号随意
System.out.println("\n");
System.out.println("----------------");
/*3.变量
* 使用变量的好处,方便之处
* int整数变量double小数变*/
int number=6;
System.out.println(number);
number=number+1;
System.out.println(number);
System.out.println("-----------------------------------------");
double number1=6.66;
System.out.println(number1);
number1=number1+660;
System.out.println(number1);
}
}
二、类型转换
自动类型转换
什么是自动类型转换?
自动类型转换是一种自动进行的转换,它发生在表达式中,当一个数据类型的值被赋值给另一个数据类型时。Java会自动尝试将源数据类型转换为目标数据类型,前提是源数据类型可以隐式转换为目标数据类型。
为什么要进行类型转换?
存在不同类型的变量赋值给其他类型的变量。
表达式的自动类型转换
表达式中的自动类型转换是什么样的?
1. 整数类型转换:
`byte`、`short`、`int`可以相互转换,其中任何一个类型可以自动转换为`long`类型。
`byte`和`short`可以自动转换为`int`,但`byte`转换为`int`时会失去超过`byte`范围的值,`short`转换为`int`时会保持原值。
2. 浮点类型转换:
`float`可以自动转换为`double`,但`float`转换为`double`时会丢失精度。
`double`不能自动转换为`float`,因为这会导致精度损失。如果需要将`double`转换为`float`,必须使用类型转换操作符`(float)`进行显式转换。
自动类型转换顺序(由大到小)
拓展
3. 混合类型转换:
整数类型与浮点类型进行运算时,整数类型会自动转换为浮点类型。运算结果将是一个浮点数。
字符串与数字类型进行运算时,字符串会被转换为数字类型。如果字符串不能转换为数字,将会抛出`NumberFormatException`。
4. 对象类型转换:
基本类型与对象类型进行运算时,基本类型会自动转换为对象类型的对应值。例如,`int`类型与`Integer`对象类型进行运算时,`int`会自动转换为`Integer`。
两个对象类型进行运算时,通常需要使用方法调用,例如`Integer a = b + c;`,这里的`+`表示调用`Integer`类的`add`方法。
5. Widening and Narrowing Conversions (拓宽和窄化转换):
拓宽转换(Widening Conversion):将一个类型转换为更大范围或相同范围内的另一个类型。例如,`byte`转换为`int`,`float`转换为`double`。
窄化转换(Narrowing Conversion):将一个类型转换为更小范围或相同范围内的另一个类型。例如,`int`转换为`byte`,`double`转换为`float`。窄化转换可能会导致数据丢失。
强制类型转换
默认情况下,大范围类型的变量直接赋值给小范围类型的变量会报错! 可以强行将类型范围大的变量、数据赋值给类型范围小的变量。
格式:数据类型变量=(数据类型)变量、数据
强制类型转换有哪些需要注意的?
可能出现数据丢失。 小数强制转换成整数是直接截断小数保留整数。
三、小案例:在程序中接收用户通过键盘输入的数据
API和API文档
Application Programming Interface,应用程序编程接口:Java写好的程序,咱可以直接调用。
API文档是Java提供的程序使用说明书。
案例:使用Scanner接收用户键盘输入的数据
需要三个步骤:
package com.itchinajie.scanner;
import java.util.Scanner;
public class ScannerDemo1 {
public static void main(String[] args) {
//1.导包:一般不需要我们自己做,idea工具会自动帮助我们导包的
//2.抄代码:得到一个键盘扫描对象(东西)
Scanner sc = new Scanner(System.in);
//3.开始调用sc的功能,来接收用户键盘输入的数据。
System.out.println("请输入您的年龄:");
int age = sc.nextInt();//执行到这,会开始等待用户输入一个整数,直到用户按了回车键,才会拿到数据
System.out.println("您的年龄是:" + age);
System.out.println("请输入您的名字:");
String name = sc.next();//执行到这,会开始等待用户输入一个整数,直到用户按了回车键,才会拿到数据
System.out.println(name + "恭喜您操作成功");
}
}
注意:
System、String在JDK中的ava.lang包下
lang包不需要我们导包,是默认的包。