文章目录
- 1.什么是常量,什么是变量
- 2.数据类型
- 2.1什么是数据类型转换
- 3.为什么要使用Scanner
1.什么是常量,什么是变量
你只需要记住两点:
常量:就是一种不会根据环境而改变的数据,例如:圆周率。
变量:是一种能够根据不同环境产生不同值的数据,例如:手机电量。
在 Java中,我们通过三个元素描述变量:变量类型、变量名以及变量值。
在Java中的变量类型又有哪些呢?在JAVA中变量类型大致可以分为两种一种是数值类型,一种是非数值类型,数值类型又分为两种:整形和非整形如图所示:
接下来我们就要开始定义变量了,需要四个步骤。
- 确定变量类型
- 取变量名
- 给变量赋初值
- 分号结尾
由字母,下划线,美元符号($),数字组成,但第一个字符不能是数字。
如果变量名是复合型的那么我们采用驼峰式,或者蛇形式的方式。 驼峰式:teaCup(表示茶杯的意思),stuAge(学生年龄) 蛇形式:tea_cup,stu_age
如果是单个单词就全小写就行了。
千万不要用中文拼音来表达:例如学生年龄:xueShengNianling。
在一个方法中变量名不能重复。变量一定要给自己一个确定的类型。
2.数据类型
Java基本类型共有八种,基本类型可以分为三类,
- 字符类型char
- 布尔类型boolean
- 数值类型byte、short、int、long、float、double
数值类型又可以分为整数类型byte、short、int、long和浮点数类型float、double。
JAVA中的数值类型不存在无符号的,它们的取值范围是固定的,不会随着机器硬件环境或者操作系统的改变而改变。实际上,JAVA中还存在另外一种基本类型void,它也有对应的包装类 java.lang.Void,不过我们无法直接对它们进行操作。8 种类型表示范围如下:
1、byte:8位,最大存储数据量是255,存放的数据范围是-128~127之间。
2、short:16位,最大数据存储量是65536,数据范围是-32768 ~ 32767之间。
3、int:32位,最大数据存储容量是2的32次方减1,数据范围是负的2的31次方到正的2的31次方减1。
4、long:64位,最大数据存储容量是2的64次方减1,数据范围为负的2的63次方到正的2的63次方减1。
5、float:32位,数据范围在3.4e-45 ~ 1.4e38,直接赋值时必须在数字后加上f或F。
6、double:64位,数据范围在4.9e-324 ~ 1.8e308,赋值时可以加d或D也可以不加。
7、boolean:只有true和false两个取值。
8、char:16位,存储Unicode码,用单引号赋值。
2.1什么是数据类型转换
顾名思义,数据类型转换就是指:不同数据类型之间的相互转换
关于数据类型转换只需要你掌握两种方式:1.自动类型转换
2. 强制类型转换自动类型转换
关于自动类型转换你只需要记住一句话,就是:表数范围小的可以向表数范围大的进行自动类型转换。
你可以这样理解:当一个小的容器的水换到一个大的容器中毫无问题,但是一个大的容器的水换成小的容器可能会装不下,就会溢出。
如下图:
强制类型转换
你肯定会有疑问,既然自动类型转换只能是表数范围小的可以向表数范围大的转换那么我在实际使用中想要将表述范围大的向小的转换怎么办呢?诶这里就要用到强制类型转换了,顾名思义,强制类型转换就是将:表数范围大的数向表数范围小的进行转换。
那怎么使用强制类型转换呢?double b = 10.2; int a = (int)b
3.为什么要使用Scanner
我们前面所有的章节的练习一直都是输出一段数据,我们知道一个软件是既要有输出也需要有输入的。而Scanner就是用于用户在Java程序中输入数据的。
所以对于Scanner你可以理解为,它就是一个扫描仪,用来获取我们从键盘输入的数据。
怎么使用?
你只需要记住三个步骤:1.在类的声明之前,引入扫描仪(Scanner):import java.util.Scanner;
2.在方法中创建一个扫描仪 Scanner input = new Scanner(System.in);
3.通过扫描仪获取从键盘输入的数据 int i = input.nextInt();package chapter2.step7; /********* Begin *********/ import java.util.Scanner; //1.导入Scanner public class HelloWorld{ public static void main(String[] args){ Scanner input = new Scanner(System.in);//2.声明扫描仪 int age = input.nextInt();//3.获取键盘输入的整数数据 System.out.println(age);//输出 /********* End *********/ } }
提示:Scanner不能获取char(字符)类型,获取小数类型需要使用nextDouble方法或者是nextFloat方法
//获取输入的小数 double d = input.nextDouble();//获取输入的双精度类型数据 float f = input.nextFloat();//获取输入的单精度类型数据
package chapter2.step7; /********* Begin *********/ import java.util.Scanner; //1.导入Scanner public class HelloWorld{ public static void main(String[] args){ System.out.println("请录入嫦娥个人信息:"); Scanner input = new Scanner(System.in);//2.声明扫描仪 System.out.println("请输入姓名:"); String name = input.next(); System.out.println("请输入年龄:"); int age = input.nextInt();//3.获取键盘输入的整数数据 System.out.println("请输入性别:"); String sex = input.next(); System.out.println("请输入体重:"); float weight = input.nextFloat(); System.out.println("请输入地址:"); String address=input.next(); System.out.println("请输入是否已婚:"); String flag = input.next(); System.out.println("信息如下:"); System.out.println('\t'+"姓名:"+name); System.out.println('\t'+"年龄:"+age+"岁"); System.out.println('\t'+"性别:"+sex); System.out.println('\t'+"体重:"+weight+"kg"); System.out.println('\t'+"地址:"+address); System.out.println('\t'+"婚否:"+flag); /********* End *********/ } }
取款机内容
package step4; import java.util.Scanner; public class ForPractice4 { public static void main(String[] args) { /*****start*****/ Scanner input = new Scanner(System.in); System.out.println("欢迎使用中国人民银行ATM取款机"); int money=1000; int flag=2; while(flag==2){ // 进入取款界面 System.out.println("输入取款金额:"); int score = input.nextInt(); if(score<=money){ money-=score; System.out.print("剩余金额:"+money+",是否继续('1':结束,'2':继续):"); flag=input.nextInt(); System.out.print("\n"); }else{ System.out.println("目前余额:"+money+"无法满足您的取款需求!"); continue; } } System.out.println("取款结束!"); /*****end*****/ } }
三个数字比大小
package step4; public class LianXi_Sort { public static void main(String[] args) { // TODO Auto-generated method stub /* * 定义三个整数x,y,z,将这三个整数由小到大排序并输出。 * 例如定义 int x = 9; int y = 10; int z = 8; -- > x的值改成8 y的值改成9 z的值改成10 * * 实现思路:通过if语句对x y z 的值进行匹配,比如x大于y则x和y进行数据交换 * */ java.util.Scanner sc = new java.util.Scanner(System.in); //获取平台分配的x的值 int x = sc.nextInt(); //获取平台分配的y的值 int y = sc.nextInt();; //获取平台分配的z的值 int z = sc.nextInt();; /**********begin**********/ sc.close(); //使用完键盘输入后关闭 int temp; if(x>y) { //如果x>y那么x,y需要交换位置 temp=x; //借助temp变量,将二者间的大数x存在temp中 x=y; //让小数y到x的位置 y=temp; //让大数x(即此时的temp)到y的位置,这时x y中的数就是从小到大的顺序 } if(x>z) { //如果x>z那么x,z需要交换位置 temp=x; //借助temp变量,将二者间的大数x存在temp中 x=z; //让小数z到x的位置 z=temp; //让大数x(即此时的temp)到z的位置,这时x z中的数就是从小到大的顺序 } if(y>z) { //如果y>z那么y,z需要交换位置 temp=y; //借助temp变量,将二者间的大数y存在temp中 y=z; //让小数z到y的位置 z=temp; //让大数y(即此时的temp)到z的位置,这时y z中的数就是从小到大的顺序 } /**********end**********/ System.out.print("x:"+x+" y:"+y+" z:"+z); } }