第二章 变量和数据类型
新手入门Java知识 变量和数据类型
声明 本文章是本人在01大学学习Java时抄录的学长的笔记,希望能够帮助到和我一样正在学习Java的同学们OvO~
课前回顾
1.什么是程序?
程序就是为了解决某个问题或者实现某个目标而编写的一系列有序指令的集合
2.Java程序是如何执行的?
Java是一门高级语言,计算机不能够直接识别我们编写的Java程序。因此,Java提供了JVM (Java Virtual Machine,Java虚拟机),JVM能够将class文件转换为计算机能够识别的指令,而我们编写的源程序是Java文件,所以还需要使用编译器将我们编写的源程序编译为class文件
一般形式为:
javac java文件的位置 作用:将我们编写的源程序编译为class文件
java 类名 作用:告诉JVM应该加载执行类名的类进入JVM,然后执行该类的main方法,程序开始执行
3.Java程序是如何实现跨平台的?
首先,要执行java程序,必须具备java运行时环境,也就是JRE,而JRE中就包含有JVM,而JVM能够将class文件翻译为当前平台能够识别的指令。因此,不管什么平台,只要安装了JRE,都会具备JVM,只要具备JVM,就能够将class文件翻译为当前平台能够识别的指令。
比如:
windows =>安装windows版的JRE
Linux =>安装Linux版的JRE
4.所以Java程序执行的入口是什么?
public static void main(String[] args){
}
举例:
public class HelloWorld{
public static void main(String[] args){
System.out.println("欢迎来到01大学");
}
}
第一节 使用Intelij Idea创建工程
可以看01大学第二节第二节课学长演示
第二节 Java中的数据类型
1.数据的概念
数据就是信息的符号表示。
2.数据类型
生活中我们常见的数据类型
java中的数据类型分为 基本数据类型 和 引用数据类型 两大类
java中的基本数据类型
其中,字节是计算机存储数据的基本计量单位。计算机中最小单位是位,英文(Bit),位与字节的单位换算关系为:1B = 8Bit
常用计量单位换算
第三节 变量的定义与使用
1.变量的概念
从字面意思看,变量就是会变化的量。
从计算机专业角度看,变量就是一个内存空间地址的表示。
在Java中,内存分为栈内存和堆内存两大块
2.变量的声明
语法
数据类型 变量名;
变量名 = 变量值; //第一种
数据类型 变量名 = 变量值 //第二种
示例
/**
* 变量的定义
*
*/
public class Example1 {
public static void main(String[] args){
//数据类型 变量名;
//变量名 = 变量值;
byte b;//告诉计算机在栈上开辟一块1个字节大小的空间,并将这块空间命名为b
b = 10; //告诉计算机将整数10放入开辟好的空间中
//数据类型 变量名 = 变量值;
short s = 5;
//告诉计算机在栈上开辟一块2个字节大小的空间,并将这块空间命名为s,然后将整数5放入这块空间中
int age = 20;
//告诉计算机在栈上开辟一块4个字节大小的空间,并将这块空间命名为age,然后将整数20放入这块空间中
age = 25;
//将整数25放入名为age的空间中
long time = 20210312;
//告诉计算机在栈上开辟一块8个字节大小的空间,并将这块空间命名为time,然后将整数20210312放入这块空间中
//在Java中,浮点数默认是双精度浮点数。如果要给一个单精度浮点数变量赋值,需要在变量值
//后面加上一个f或者F,表示是单精度浮点数
float f = 10.0f;
//告诉计算机在栈上开辟一块4个字节大小的空间,并将这块空间命名为f,然后将单精度浮点数10.0放入这块空间中
double score = 65.5;
//告诉计算机在栈上开辟一块8个字节大小的空间,并将这块空间命名为score,然后将双精度浮点数65.5放入这块空间中
//在Java中的布尔类型变量,编译完成后就不存在了。因为Java是在C++的基础上开发的,而C++中
//使用0 与 非0表示假和真。而JVM是执行JAVA程序的场所,在JVM规范中有明确说明,单个boolean
//类型的变量,在编译过程中会被翻译为int类型的变量,此时占用4个字节的空间。对于boolean类型
//的数组,在翻译的过程中会被翻译为byte类型的数组,此时每个变量占用1个字节的空间
boolean isNice = true;
//char类型变量能否存在汉字?
//答:能。Java采用的是Unicode编码,而Unicode编码中收录的汉字占用的是2个字节,我们的char类型变量
//也是占用2个字节的空间,因此,在Unicode编码中收录的汉字可以使用char类型变量存储。而在Unicode编码
//中未收录的汉字不一定能够使用char类型变量存储
char sex = '男';
//告诉计算机在栈上开辟一块2个字节大小的空间,并将这块空间命名为sex,然后将字符'男'放入这块空间中
}
}
在java中变量名必须保证唯一
3.变量的命名规则
变量名只能以字母、下划线和 开始,其余部分由任意多的字母、数字、下划线和 开始,其余部分由任意多的字母、数字、下划线和 开始,其余部分由任意多的字母、数字、下划线和组成。
变量名不能是java中的保留字(关键字)。
java语言是严格区分大小写的
int number = 5;
int NUMBER = 5;//这是两个不同的变量
4.变量的命名规范
在java中,变量名采用的是驼峰命名法。变量名组成成第一个单词的首字母小写,其余单词首字母均大写。
String myNAME = "张德帅";
第四节 运算符
1.常规运算符 (+ - * /) **
示例
/**
* 运算符操作
*
*/
public class Example2 {
public static void main(String[] args){
//变量在使用之前必须完成初始化操作。换言之就是给变量赋值。
// int a,b;
// a = 5;
// b = 10;
int a = 5,b = 10;//可以在一行代码中同时声明多个变量并完成赋值
int c = a + b;
System.out.println("a + b =" + c);//'+'表示一个拼接符,相当于在打印的结果后面拼上一个c的值
int d = b - a;
System.out.println("b - a =" + d);
int e = a * b;//注意:在Java中乘法使用的是*
System.out.println("a * b =" + e);
int f = b / a;//注意:在Java中除法使用的是/
System.out.println("b / a =" + f);
}
}
2.取模%
示例
int a = 10 % 3;//求10除以3的余数
System.out.println("10 % 3 = " + a);
案例
给定一个数,如5678,求组成这个数的每一位数字
代码实现
//5678 / 10 = 567
//5678 / 100 = 56
//5678 / 1000 = 5
int number = 5678;
int ge_wei =number %10;
//在Java中,两个整数相除,得到的结果一定是整数
int shi_wei = number / 10 % 10;
int bai_wei = number /100 % 10;
int qian_wei = number / 1000;
System.out.println("个位:" + ge_wei);
System.out.println("十位:" + shi_wei);
System.out.println("百位:" + bai_wei);
System.out.println("千位:" + qian_wei);
在Java中,两个整数相除,得到的结果一定是整数
3.++和–
示例
//++运算符分为前置++和后置++
int count = 0;
count++;//表示自加1
++count;//表示自加1
//如果一行代码中只有++运算符,没有其他运算符,不论++在前还是在后,结果都是一样的
int number1 = count++;//执行之后,number1 = 2,count = 3
//因为++运算符在变量的后面,因此,先将变量count的值赋值给变量number1,然后变量count自加1
int number2 = ++count;//执行之后,count = 4,number2 = 4
//因为++运算符在变量的前面,因此,变量count先自加1,然后将count变量赋值给变量number2
System.out.println("number1 = " + number1);
System.out.println("number2 = " + number2);
面试题:
分析下面代码的执行过程
//面试题
int c = 10;
//在java中运算都是从左往右依次执行。因此c++先执行,++c后执行
//c++ => c = 10; => c = 11;
//++c => c = 12;
int d = c++ + ++c;//d = 10 + 12;
System.out.println(d);
4.+=、-=、*=、/=、%=
示例
int number1 = 10;
number1 += 10;//number1 = number1 + 10;
number1 -= 10;//number1 = number1 - 10;
number1 *= 10;//number1 = number1 * 10;
number1 /= 10;//number1 = number1 / 10;
number1 %= 10;//number1 = number1 % 10;
//发现
int result1 = 10;//整数
double add = 2.0;//浮点数
//result1 = result1 + add;编译会报错
//原因是右边 10 + 2.0 => 10.0 + 2.0 => 12.0 结果是双精度浮点数,占用8个字节空间,因此无法给左边
//占用4个字节空间的变量result1赋值
result1 += add;//这样写就不会报错,说明 += 还具有其他功能,具有强制转换的功能,这里为result1 = (int)(result1 + add)
//把右边的运算结果强制转换为左边的类型,其他的这种符号也一样
第五节 数据类型转换
1.自动类型转换
相互兼容的多种数据类型在运算时,小转大即为自动类型转换。如:10 + 0.5 => 10.0 +0.5
2.强制类型转换
相互兼容的多种数据类型在运算时,大转小即为强制类型转换。如:68.5 + 1.5 => (int)70.0 => 70
强制类型转换语法规则
(目标数据类型)变量名;
在Java中,数值类型相互兼容,在进行运算时,必须保证表达式中的参与运算的数据的所有数据类型保持一致
3.案例
小明考试的时候考了59分,小明感觉很憋屈,于是奋发图强,然后下一次考试比上一次考试多考了1.5分,请问小明本次考试考了多少分?
/**
* 小明考试的时候考了59分,小明感觉很憋屈,于是奋发图强,然后下一次考试比上一次考试多考了1.5分
* 请问小明本次考试考了多少分?
*
*/
public class Example5 {
public static void main(String[] args){
int score = 59;
//int nextScore = score + 1.5;编译会报错,因为59 + 1.5 => 59.0 + 1.5 => 60.5
//结果是一个占8个字节空间的双精度浮点数,不能给占4个字节空间的nextScore赋值,因此要写成
double nextScore = score + 1.5;// 59 + 1.5 => 59.0 + 1.5 => 60.5,这是自动类型转换
int nScore = (int)(score + 1.5);// 59 + 1.5 => 59.0 + 1.5 => 60.5 => 60,这是强制类型转换
System.out.println(nextScore);
System.out.println(nScore);
}
}
第六节 Scanner的基本使用
1.Scanner的作用
提供一种与用户交互的方式,用户可以在控制台输入一些数据,程序来获取这些数据
2.常用方法
方法名 | 解释说明 |
---|---|
nextDouble() | 获取用户从控制台输入的浮点数,如果输入的不是数字,就会出错 |
nextFloat() | 获取用户从控制台输入的浮点数,如果输入的不是数字,就会出错 |
nextInt() | 获取用户从控制台输入的整数,如果输入的不是整数,就会出错 |
nextByte() | 获取用户从控制台输入的整数,如果输入的不是整数,就会出错 |
nextShort() | 获取用户从控制台输入的整数,如果输入的不是整数,就会出错 |
nextLong() | 获取用户从控制台输入的整数,如果输入的不是整数,就会出错 |
nextBoolean() | 获取用户从控制台输入的boolean值,只能输入ture或者false,否则就会出错 |
next() | 获取用户从控制台输入的字符串 |
举例:
import java.util.Scanner;//调用Scanner必须要写
/**
* Scanner的基本使用
*
*/
public class Example6 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);//固定写法,无需深入理解,可以对照main方法来记录
System.out.println("请输入你的名字:");
String name = sc.next();//将用户输入的姓名获取到,并使用变量name存储起来
System.out.println(name);
//记住8种基本数据类型的名称:byte short int long double float boolean char
System.out.println("请输入一个整数:");
int number = sc.nextInt();//将用户输入的整数获取到,并使用变量number存储起来
System.out.println(number);
System.out.println("请输入你的成绩:");
double score = sc.nextDouble();//将用户输入的双精度浮点数获取到,并使用变量score存储起来
System.out.println(score);
//剩下的5种相似,这里不再详述
}
}
3.案例
从控制台输入3位学生的成绩,然后计算平均分
4.代码实现
import java.util.Scanner;
/**
* 从控制台输入3位学生的成绩,然后计算平均分
*
*/
public class Example7 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入3位学生成绩(每一位学生成绩可以使用空格隔开)");
int score1 = sc.nextInt();
int score2 = sc.nextInt();
int score3 = sc.nextInt();
int avg = (score1 + score2 + score3) / 3;//在Java中,两个整数相除,得到的结果一定是整数
System.out.println(avg);
}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!