前言
我们继续Java基础的学习,本章的内容是变量和标识符以及数据类型转换
标识符
什么是标识符
标识符就是Java中的各种名字,由程序员来定义,包括:
- 类名
- 方法名
- 变量名
- 包名
- 常量名
…
标识符的命名规则
标识符必须按一定的规则定义,违反命名规则的标识符,会出现编译错误
Java标识符的命名规则是:
- 必须由英文字母、数字和下划线、$组成
- 不能以数字作为开头
- 不能使用Java中的关键字
标识符的命名规范
命名规范不是强制性的,但良好的命名规范,对代码的可读性和维护性是非常重要的。
Java的命名规范包括:
- 见名知义,需要由有意义的英文单词
- 变量名和方法名,驼峰命名,由一个或多个单词组成,第一个单词的开头小写后面的单词开头大写,如:goodsPrice、person、myFirstPersonAge
- 类名,类似驼峰命名,每个单词的开头都是大写,如:HelloWorld、MyFirstHomework
- 包名:全部单词小写中间由.连接,域名.公司名.项目名.模块名,如:com.sun.oa.login
- 常量名,全部单词大写,中间由下划线分隔,如:MAX_VALUE
练习:
请判断哪些是合法的标识符:
HelloWorld
username2
user_name
_userName
$abc_123
2UserName
user#Name
Hello World
java
class
变量
变量的概念
变量是在JVM的内存中的一个个空间,用于存储Java程序中各种数据,变量中的数据可以随时修改。
如在执行游戏时,英雄的名字、血量、魔法值、等级这些都可以用变量保存。
使用变量
变量的三个要素
- 变量名
- 数据类型
- 初始值
定义变量的方法
- 定义变量,同时初始化
数据类型 变量名 = 初始值;
如:int hp = 100; - 先定义变量,然后再初始化
数据类型 变量名;
变量名 = 值;
int hp;
hp = 100; - 同时定义多个类型相同的变量
数据类型 变量名1 = 值,变量名2 = 值;
int hp = 100,mp = 300;
变量的作用域
作用域是变量能够起作用的范围
- 局部变量
在方法中定义的变量,作用域就是定义该变量的方法内部,局部变量在使用之前必须初始化。 - 全局变量
在类中的所有方法外面定义的变量,作用域就是整个类,全局变量如果不初始化会有默认值。
public class Demo01 {
int x = 9; //全局变量
public static void main(String[] args) {
//局部变量
String name = "貂蝉";
int hp = 100;
int mp = 200;
System.out.println("英雄的名字是:" + name);
System.out.println("英雄的血量是:" + hp);
System.out.println("英雄的魔法值是:" + mp);
}
}
执行下面代码有什么问题?
public class Demo02 {
public static void main(String[] args) {
int num1;
int num2 = num1 + 1;
}
}
变量的数据类型
注意:
- long类型变量赋值时,数字后面要加L或l,推荐使用L
long num = 100L; - float类型变量赋值时,浮点数后要添加f或F,否则默认是double类型,赋值出错
float num = 10.5f; - char的值用单引号括起来
char c = ‘A’;
类型转换
不同的数值类型之间可以进行数据类型的转换
数值类型有:
byte\short\int\long\float\double\char
数值类型的取值范围从小到大排列为:
类型转换:
- 自动类型转换
从小的类型转换为大的类型
由编译器自动完成
long num = 200; //200属于int类型,编译器自动会将200转换200L,赋值给long类型的变量num。
byte num2 = 100;//100在byte取值范围内,100作为byte保存。
int num1 = num2; //byte -> int
double price = 2500; //int -> double
- 强制类型转换
大的类型转换为小的类型
需要手动完成
数据类型 变量名 = (数据类型)值;
注意:强制类型转换可能丢失精度
/*
对于整数值编译器会看做char数值进行处理,
对于变量编译器不会进行处理,就需要强制类型转换
*/
int num3 = 99;
char char1 = (char)num3;
/*
对于short类型,如果赋值的数字在-32768~32767之间,编译器会作为short数字进行处理
如果超过该范围,就会作为int数字处理
*/
short num5 = (short)50000;
总结:类型转换都会对程序性能有影响。
练习
找出下面代码中不能通过编译的代码
int n1 = 20;
int n2 = 20.5;
int n3 = 100L;
float f1 = 20;
float f2 = 5.5;
float f3 = 3.3f;
double d1 = 15;
double d2 = 33.3f;
double d3 = 20L;
d1 = n1 + f1; //表达式的类型由表达式中最大的数据类型决定
f1 = d1;
键盘输入
从键盘输入值给变量赋值,需要用到Scanner类(扫描器)
//导入Scanner
import java.util.Scanner;
public class Demo03 {
public static void main(String[] args) {
//创建Scanner对象
Scanner input = new Scanner(System.in);
//输入字符串
String name = input.next();
//输入整数
int age= input.nextInt();
System.out.println("英雄的名字是:" + name);
System.out.println("英雄的年龄是:" + age);
}
}
结束
作业:
1、输入游戏角色的名称、攻击力、血量、级别等信息,并输出。
2、输入两个整数,交换两个变量的值
大家做完后可以把代码发到评论区一起讨论
大家如果需要学习其他Java知识点,戳这里 超详细的Java知识点汇总