【Java SE】变量和运算符
来源:互联网 发布:nginx 只能访问index 编辑:程序博客网 时间:2024/06/05 18:27
Java程序的基本结构
package test; // 定义包public class Example { // 创建类 static int ONE = 1; // 定义类的成员变量 public static void main(String[] args) { // 定义主方法 String str = "Hello"; // 定义局部变量 System.out.println(ONE); // 输出成员变量的值 System.out.println(str); // 输出局部变量的值 }}
- 一个Java程序的基本结构大体可以分为包、类、main()主方法、标识符、关键字、语句和注释等
- 关键字:package(标识包)、class(标识类)、static(标识静态)
- 标识符:test(表包名)、Example(表类名)、ONE(表成员变量名)、args(表形式参数名)、str(表局部变量名)
- 包:关键字package后的标识符为包名
- 类:关键字class后的标识符为类名
- 主方法:“public static void main(String[] args){}”主方法的固定写法,是Java应用程序的入口点,Java程序是从该方法开始执行的
- 语句:“System.out.println();”在命令行或控制台输出信息的语句的固定写法
- 注释:语句后由“//”标识的内容,不会被编译到字节码文件中
- 一个Java程序的基本结构大体可以分为包、类、main()主方法、标识符、关键字、语句和注释等
标识符
- Java中的包、类、方法、参数和变量的名称
- 命名规则:
- 必须以字母、下划线或美元符号开头,余下的字符可以是下划线、美元符号或任何的字母、数字,长度不限
- 为了避免出错,建议只用英文进行命名,采用具有实际意义的单词
- 标识符中不能有空格
- 不能是Java的关键字和保留字
- Java语言中标识符是区分大小写
关键字/保留字
- 红色为保留字
基本数据类型
整数类型:byte|short|int|long
- Java各整数类型有固定的表数范围和字段长度,其不受操作系统的影响,以保证Java程序的可移植性(使用时一定要注意,以免数据溢出产生错误)
- 思考:是否存在一个数a,满足a+1<a?
byte b1 = 127;byte b2 = b1 + 1;// b2=-128
- 思考:是否存在一个数a,满足a+1<a?
- Java语言的整型常量默认为int型
- 声明long型后面需加上l或L,负责会出错(建议加L)
- Java中整型的三种表示形式:
- 十进制数:0~9,第一位不能是0
- 十六进制数: 0~9,A~F,必须以0x或0X开头
- 八进制数:0~7,必须以0开头
- Java各整数类型有固定的表数范围和字段长度,其不受操作系统的影响,以保证Java程序的可移植性(使用时一定要注意,以免数据溢出产生错误)
浮点类型:float|double
- Java浮点数类型有固定的表数范围和字段长度,不受平台影响
- Java浮点数类型有两种表示形式:
- 十进制数形式
- 科学记数法形式
- Java浮点型常量默认为double型,如果要声明一个常量为float型,则需在数字后面加f或F
- Java浮点数类型有固定的表数范围和字段长度,不受平台影响
字符类型:char
- 单个字符用char类型表示,通常取值为:英文字母、数字、转义字符、特殊字符等
- Java中的字符占两个字节,可以用十六进制编码形式表示
- Java中的字符类型的值通常用单引号括起来
- 字符类型是一个16位无符号整数(所以char型可以隐式转换为int型)
- 转义字符
布尔类型:boolean
- 适用于逻辑运算,一般用于程序流程控制
- boolean类型有两个值:true和false
基本数据类型的转换
隐式类型转换
- 多种类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后进行计算
- 转换规则:
- boolean类型不可以转换为其他的数据类型
- 整型、字符型、浮点型的数据在混合运算中相互转换,转换时遵守以下原则
显式类型转换
- 容量大的数据类型转换为容量小的数据类型时,需要使用强制类型转换
- 语法:变量 = (目标类型) 值
- 在强制类型转换过程中,源类型的值可能大于目标类型,因此可能造成精度降低或溢出(建议尽量不用显示类型转换)
常量和变量
常量
程序里持续不变的值,在整个程序运行过程中它是不可改变的- 在Java语言中声明一个常量,除了要指定数据类型外,还需要通过final关键字进行限定,所以通常也被称为“final变量”
- 常量名通常使用大写字母表示
变量
程序中表示值能改变的量- 变量代表内存中值的保存空间
- Java中任何变量都有一种类型,类型不同决定开辟内存空间大小的不同
- 变量不是在整段代码中都可以使用,变量有自己的作用域
- 变量的作用域从声明变量的地方开始,到所在块结束
- 离开变量的作用域,变量所代表的内存空间将被回收
- 根据变量的作用域划分变量:
- 类变量:用static修饰的成员变量,它们在类被载入时创建,只要类存在,static变量就存在
- 成员变量:类体中声明的变量,也称为全局变量,在类的整个生命周期中都有效
- 局部变量:方法体中声明的变量、方法中的参数或代码块中声明的变量都是局部变量,只在方法调用的过程中有效,方法调用结束后失效
- Java是强类型语言,所以Java中的变量:
- 必须声明并且初始化以后才能使用
- 必须有明确的类型
- 在同一作用域内不能重复定义
- 变量初始化顺序:
- 隐式赋予默认值
- 显式赋予初始值
- 通过构造器赋予新值
public class VarDemo { public static void main(String[] args) { int age; // 变量的声明 //System.out.println(age); // 错,变量没有初始化 age = 12; // 变量初始化,即变量的第一次赋值 System.out.println(age); // 12 age = 15; // 变量赋值 System.out.println(age); // 15 //System.out.println(length); // 错,变量没有被声明 int length = 20; // 声明变量并且直接初始化 System.out.println(length); // 20 if(age<14){ int rank = 15; // 声明局部变量 System.out.println(rank); // 15 } //System.out.println(rank); // 错,超出作用域调用变量 int rank = 18; // 不同块内可以重新定义 System.out.println(rank); //int age = 8; // 错,相同块内重复定义变量 }}
运算符
运算符是主要用于数学函数、一些类型的赋值语句和逻辑比较方面的一些特殊符号赋值运算符
- 赋值运算符即“=”,是一个二元运算符,其功能是将右方操作数所含的值赋值给左方的操作数
- 赋值表达式左方必须是一个变量,而右边所赋的值可以是任何数值或表达式,包括变量、常量或有效的表达式
算术运算符
- 算术运算符主要有+(加)、-(减)、*(乘)、/(除)或%(求余),它们都是二元运算符
- 除法运算时,0不可以做除数,否则系统会报出ArithmeticException的异常
- 对于“+”:
- 在两个数值之间表示加法运算
- 当操作数中只要有一个是String类型,系统会自动将另一个操作数转换成字符串类型,然后进行连接
自增和自减运算符
- ++(自增)、--(自减)运算符是单目运算符,操作元必须是一个整型或浮点型变量
- 自增、自减运算符可以放在操作元之前,也可以放在操作元之后
- 放在操作元前面的自增、自减运算符,会先将变量的值加1(减1),然后再使该变量参与表达式的运算
- 放在操作元后面的自增、自减运算符,会先使变量参与表达式的运算,然后再将变量加1(减1)
int a=1;int b=1;b=a++;//b=1/* * a++表达式的值是1 * 执行赋值运算,将表达式的值1赋值给b,即b=1 * 执行a++,即a=a+1 */int i=1;int j=1;j=++i;//j=2/* * ++i表达式的值是2 * 执行赋值运算,将表达式的值2赋值给j,即j=2 */
比较运算符
- 比较运算符属于二元运算符,主要有>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)和!=(不等于)
- 比较运算符用于程序中的变量和变量之间、变量和常量之间以及其他类型的信息之间的比较
- 比较运算符的运算结果是boolean型,当运算符对应的关系成立时,运算结果时true,否则结果是false
- 比较运算符通常用在条件语句中来作为判断的依据
逻辑运算符
- 逻辑运算符包括&&(&)(逻辑与)、||(|)(逻辑或)和!(逻辑非),返回值为布尔类型的表达式,操作元也必须是boolean型数据
- 在逻辑运算符中,除了“!”是一元运算符之外,其余都是二元运算符
- &&具有短路性,即左面的表达式为false,则将不会计算其右边的表达式
- ||具有短路性,即左面的表达式为true,则将不会计算其右边的表达式
int i=1;boolean b= i!=1 && (i++)==2;//短路与,i++不执行System.out.println(b);//falseSystem.out.println(i);//1b= i!=1 & (i++)==2;//非短路运算,i++执行System.out.println(b);//falseSystem.out.println(i);//2
位运算符
- 位运算符包括&(按位与)、|(按位或)、^(按位异或)、~(按位取反)、>>(右移)、<<(左移)、>>>(无符号右移)
- 按位与(或)既可以参与位运算,又可以参与逻辑运算
- 左移和右移运算相当于实现整数乘以或除以2的n次方
- 不用其他变量实现两变量互换
// 如果需要交换的是两个整数类型的变量,可以使用异或运算符进行互换,而不需要使用第三变量import java.util.Scanner;public class VariableExchange { // 声明类 public static void main(String[] args) { // 主方法 Scanner sc = new Scanner(System.in); // 创建扫描器 System.out.println("请输入变量A的值:"); long A = sc.nextLong(); // 接收第一个变量值 System.out.println("请输入变量B的值:"); long B = sc.nextLong(); // 接收第二个变量值 System.out.println("A=" + A + "\tB=" + B); System.out.println("执行变量互换……"); A = A ^ B; // 执行变量互换 B = B ^ A; A = A ^ B; System.out.println("A=" + A + "\tB=" + B); // 执行交换后的结果 }}
三元运算符
- 语法:表达式1?表达式2:表达式3
- 三元运算符是对三个表达式进行的集中比较,表达式1的结果为true时,就为第二个表达式,如果为false时,就为第三个表达式
//4<3表达式的结果为true和false中的一个boolean n = (4<3) ? true : false;//打印并显示结果System.out.println(n);
运算符的优先级
- 一元操作符>二元操作符>三元操作符
- 算术运算符>关系运算符>逻辑运算符>赋值运算符
- 括号优先级别最高
表达式
- 符合一定语法规则的运算符和运算数的序列
- 对表达式中操作数进行运算得到的结果称为表达式的值
- 表达式值得数据类型即为表达式的类型
- 运算顺序:
- 按照运算符的优先级从高到低的顺序进行
- 优先级相同的运算符按照事先约定的结合方向进行
0 0
- 【Java SE】变量和运算符
- Java SE 01 数据类型和运算符
- Java SE-运算符
- Java SE基础部分-03. 运算符和表达式
- java变量和运算符
- java变量和运算符
- java SE 运算符(五)
- 【JAVA SE】6.程序格式+运算符
- Java SE——运算符
- Java SE -- 静态变量
- Java SE-变量
- java SE 变量
- JAVA编程基础-变量和运算符
- JAVA之变量、数据类型和运算符
- Java基础_变量和运算符
- JAVA基础知识 变量和运算符
- 【Java学习笔记】变量和运算符
- java 变量.数据类型和运算符
- PHP CURL 发送HTTPS POST请求
- 利用钱包APP T+1实现额外收益
- [笔记]我的Linux入门之路 - 03.Java环境搭建
- 第一个D2D程序运行及配置
- NOI2016 优秀的拆分 后缀数组
- 【Java SE】变量和运算符
- 宇宙总统竞选
- BZOJ 4517 [Sdoi2016]排列计数
- 紫书 例题 11-4 电话圈 UVa247 Floyd传递闭包
- Arithmetic problem | The Triangle
- 【Python】生成图片验证码
- 年味并没有失效,只是你我早已过了那个时间段
- Reverse Linked List
- Windows 容器快速入门