前言
当掌握一种或者多种计算机编程语言,甚至外语之后,学习新事物的自信,也随之建成。
不同的计算机编程语言,都可以帮助程序员实现功能,英语和汉语都可以帮助人类表达思想。
不要纠结在自然语言或者计算机编程语言,它们本身的不同,要聚焦在我想要实现什么功能? 想要表达什么思想?
一、变量存在的意义
1.变量是什么?
有了域名之后我们就无需反复在浏览器中输入IP地址,有了变量之后,方便我们编程时轻松调用需要的数据。
变量是给编程过程中使用到的数据标记1个别称,变量一般是动态变化的数据,也可以是静态不变的。
2.声明变量
Java是强类型的编程语言,我们要想给数据声明变量,就必须声明数据的类型。
数据类型 变量名 =值;
二、Java的基本数据类型
计算机只认识0和1;
程序员通过编程语言的语法,告知计算机我输入的数据是什么类型?
编程语言会根据不同类型选择不同的存储机制,把数据存储到内存中;
当调用这些数据时,编程语言进行内存寻址,把数据从内存中加载出来;
那为什么在python中不需要变量名和变量类型声明?
python是解释型语言,python的变量不需要声明,但是需要初始化,python解释器会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同),其中变量其实通过一个标记调用内存中的值,而变量名就是这个标记的名称,python可以通过直接赋值初始化让一个变量拥有内存和值(电脑可以直接理解)。
对比于编译型语言Java,解释器语言Python的优势在于,解释器帮你做了很多事;
比如说动态分配内存在Python中可以直接给a赋值成整形,浮点型,字符型等等。
Java有以下几种数据类型;
1.整数型
整数类型可以帮助我们在计算机中执行数学运算。
在Java中可以使用byte、int、short、long表示不同大小范围的整数。
byte: 占8位, 1个字节,可表示 -128~127之间的整数。
short: 占16位,2个字节,可表示 -32768~32767之间的整数。
int: 占32位,4个字节,可表示 -21亿~21亿之间的整数。
long 占64位,8个字节,可表示 -9,223,372,036,854,775,808(-2^63)之间的整数
package var; import sun.security.acl.WorldGroupImpl; public class Var4 { public static void main(String[] args) { byte English_score = 100; //byte short total_score = 660; //short int Chinese_population = 130000000; //int long world_population = 6400000000L; //long System.out.printf("英语分数: %d 高考分数:%d 中国人口:%d 世界人口:%d ", English_score, total_score, Chinese_population, world_population); } }
整型的运算操作
package var; public class Var1 { public static void main(String[] args) { // 先声明1个变量 int a1 = 10; System.out.println(a1); a1 = 20; System.out.println(a1); int a = 10; int b = 20; System.out.println(a + b); System.out.println(a - b); System.out.println(a * b); System.out.println(a / b);//如果运算两端都是int,结果还是int类型 System.out.println(a % b); //取余 System.out.println(10 % 3); } }
2.浮点型
double类型操作和整数基本一样,2个double类型计算得出的结果都是double类型。
在Java中可以使用float和double这2种数据类型表示浮点数;
float类型的浮点数 占32位, 最多可保留小数点后面的8位;
double类型的浮点数 占64位,最多保留小数点后面的17位;
package var; import sun.security.acl.WorldGroupImpl; public class Var4 { public static void main(String[] args) { //float类型的浮点数占32位,最多可保留小数点后8位 float a=0.123456789123456789f; System.out.println(a); //double类型的浮点数占64位,最多保留小数点后面的17位; double b=0.123456789123456789; System.out.println(b); } }
浮点型的运算操作
package var; public class Var2 { public static void main(String[] args) { //声明double类型的变量:=表示赋值 double price = 1.25; price += 0.15; System.out.println(price); price -= 0.01; System.out.println(price); //double类型计算得到的都是double类型 double total = price * 3; System.out.println(total); //4.17 System.out.println(price / 100);//0.0139 System.out.println(price % 2); } }
3.boolean 布尔值
我们使用boolean类型保存1种状态,这1种状态要么是 true 要么是false。
布尔类型主要用做条件判断,进而对流程控制。
package var; public class Var3 { public static void main(String[] args) { double incomes = 1000; double costs = 20000; System.out.println(incomes > costs); //false:收入大于花销? System.out.println(incomes < costs); //true 收入小于花销? System.out.println(incomes == costs); //false收入等于花销吗? System.out.println(incomes != costs); //true收入不等于花销吗? } }
4.char 字符
单一的文字符号就是字符,每个字符在内存中占16位;
package var; import sun.security.acl.WorldGroupImpl; public class Var4 { public static void main(String[] args) { char a = '中'; char b = 'a'; System.out.println(a); System.out.println(b); } }
5.String 字符串
把多个字符串起来=字符串
package var; public class Var4 { public static void main(String[] args) { String name1 = "Martin"; String name2 = "Morgen"; System.out.println(1 + name1 + name2); int a = 1, b = 2; System.out.println("a + b = " + a + b); //a + b = 12 System.out.println("a + b = " + (a + b)); //a + b = 3 } }
6.基本数据类型之间的转换
根据Java基本数据类型占用内存大小排序,可以把基本类型排序为以下顺序;
byte-->short,char-->int--->long--->float--->double
小数据类型转换成大数据类型,这个过程是安全的;
大数据类型转换成小数据类型,这个过程可能会出现问题,必须要强制转换;
基本数据类型强制转换的语法如下:
(转换后的数据类型)变量
package var; import sun.security.acl.WorldGroupImpl; public class Var4 { public static void main(String[] args) { int a = 10; long b = a; System.out.println(b); //小数据转大数据是安全的 long c = 10; // int d =c; //大数据转小数据是不安全有风险的,必须强制转换 int d = (int) c; System.out.println(d); long c1 = 1000000000000L; int d1 = (int) c1; //大数据转小数据出现内存溢出,程序不可控了 System.out.println(d1); //-727379968 } }
7.基本数据类型之间的运算
Java基本数据类型进行运算时会遵循一下规则;
A.相同数据类型之间
相同数据类型之间运算,得到的结果一定还是这个数据类型;
int + int =int;
B.不同数据类型之间
首先,把小的数据类型自动转换成大的数据类型,再进行运算,得出的结果一定是大的数据类型;
int + int =long;
C.特殊的byte、short、char
由于byte、short、char占用的位数少,可表示的数字范围有限,
所以当它们进行运算之后的结果可能会需要更大的内存去存储;
为了避免运算造成内存溢出,我们就需要使用比byte、short、char更大的数据类型来存储运算后的结果;
byte + byte = int; 结果至少是int;
package var; import sun.security.acl.WorldGroupImpl; public class Var4 { public static void main(String[] args) { byte a = 100; byte b = 120; // byte c =a+b; //byte无法表示a+b的和 int c = a + b; System.out.println(c); } }
三、使用Java基本数据类型
程序=数据结构+算法,所以任何语言都要支持我们输入各种类型的信息数据。
import java.util.Scanner; public class Student{ public static void main(String[] args){ //键盘录入学生信息:姓名、年龄、身高、和性别 String greeting=" ------欢迎来到清花大学------ "; System.out.println(greeting); Scanner sc = new Scanner(System.in); System.out.print("请输入姓名: "); String name= sc.next(); System.out.print("请输入性别: "); char charGender=sc.next().charAt(0); System.out.print("请输入年龄: "); int age=sc.nextInt(); System.out.print("请输入身高: "); double heigh=sc.nextDouble(); System.out.printf("该学生的姓名为:%s,性别:%c,年龄:%d,身高:%f ",name,charGender,age,heigh); } }
参考