Java学习之==>注释、数据类型、变量、运算符
一、注释
在Java中有3种标记注释的方式,最常用的方式是 // ,其注释的内容从 // 开始,到本行结束。但需要注意的是,我们不建议把注释写在代码的尾部(即尾注释),我们建议把注释写在代码的上一行,如下:
建议:
public class Test {
public static void main(String[] args) {
// 将Hello World输出到控制台
System.out.println("Hello World!!");
}
}
不建议:
public class Test {
public static void main(String[] args) {
System.out.println("Hello World!!"); // 将Hello World输出到控制台
}
}
如果我们的 Intellij IDEA上装了阿里巴巴的一款插件 Alibaba Java Coding Guidelines,它就会对这种尾注释进行说明,不建议使用这种注释,如下:
当需要长篇的注释时,既可以在每行的前面标记 //,也可以使用 /* 和 */ 将一段比较长的注释括起来,如下:
public class Test {
public static void main(String[] args){
/*
第一个Java程序 */
// println 打印后换行
System.out.println("Hello World!!");
// print 打印后不换行
System.out.print("Hello World!!");
}
}
第三种注释可以用来自动生成文档,这种注释以 /** 开始, 以 */ 结束,如下:
public class Test {
public static void main(String[] args){
/**
* 第一个Java程序
* @author xxx
* date 2019-5-27
*/
// println 打印后换行
System.out.println("Hello World!!");
// print 打印后不换行
System.out.print("Hello World!!");
}
}
二、数据类型
Java是一种强类型语言,这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本数据类型,其中有4种整型、2种浮点型,另外还有一种用于表示Unicode字符编码的的字符类型 char 和一种用于表示真假值的 boolean 类型。
1、整型
整型用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,具体内容如下:
长整型数值有一个后缀L或 l 。十六进制的数值有一个前缀 0X 或 0x ,八进制的数值有一个前缀 0,例如,010 对应八进制种的 8,但很显然,八进制表示法比较容易混淆,所以建议最好不要用八进制常数。
从 Java7 开始,加上前缀 0B 或 0b 就表示二进制数。例如,0b1001就表示 9 。另外,同样是从 Java7 开始,还可以为数字加下划线,如用 1_000_000 表示一百万,这些下划线只是为了让人更容易读,Java 编译器会去除这些下划线。
2、浮点型
浮点型用于表示有小数部分的数值,同样也允许是负数。Java 提供了2种浮点型,具体内容如下:
double 类型的数值精度是 float 类型的两倍。绝大部分应用程序都使用 double 类型。在很多情况下,float 类型的精度很难满足需求。实际上,只有很少的情况适合使用 float 类型,例如,需要单精度数据的库,或者需要存储大量的数据。
float 类型的数值有一个后缀 F 或 f ,没有后缀的浮点数值默认为 double 类型。当然,也可以在浮点数值后面添加后缀 D 或 d 表示 数值是 double 类型。
所有的浮点数值计算都遵循 IEEE 754 规范。具体来说,下面是用于表示溢出和出错情况的三个特殊的浮点数值:
- 正无穷大
- 负无穷大
- NaN(不是一个数字)
例如,一个正整数除以 0 的结果为正无穷大,负整数除以 0 的结果则为负无穷大,计算 0/0 或者负数的平方根结果为 NaN。
3、char 类型
char 类型原本用来表示单个字符。如今,有些 Unicode 字符可以用一个 char 值描述,另外一些Unicode 字符则需要两个 char 值。
char 类型的字面量值要用单引号括起来。例如:'A' 是编码值为 65 所对应的字符常量,它与 "A" 不同,"A" 是包含一个字符 A 的字符串。char 类型的值可以表示为十六进制值,其范围从 \u0000 到 \Uffff,例如:\u03C0 表示希腊字母 π 。
除了转义序列 \u 之外,还有一些用于表示特殊字符的转义序列。所有这些转义序列都可以出现在加引号的字符字面量或字符串种,例如:'\u2111' 和 "Hello\n" 。转义序列 \u 还可以出现在加引号的字符常量或字符串之外,例如:public static void main(String\u005B\u005D),者完全符合语法规则,\u005B 和 \u005D 是 [ 和 ] 的编码。特殊字符转义序列如下:
4、boolean类型
boolean(布尔)类型有两个值:true 和 false ,用来判断逻辑条件。整型值和布尔值之间不能进行相互转换。这点与Python当中不同,Python当中有一种用法叫做:非0即真,非空即真。
三、变量
在 Java 中,每个变量都有一个类型(type),在声明变量时,变量的类型位于变量名之前。下面列举一些声明变量的示例:
int vacationDays; double salary; long population; boolean done;
可以看到,由于声明是一条完整的 Java 语句,所以必须以分号结束。变量名必须是一个以字母开头并由字母或数字构成的序列,但 '+' 和空格不能出现在变量名中。变量名中的所有字符都是有意义的,并且大小写敏感,变量名的长度基本上没有限制。另外,不能使用 Java 的保留字作为变量名。
1、变量初始化
声明一个变量后,必须用赋值语句对变量进行初始化。初始化需要将变量名放在等号(=)左侧,相应取值的Java表达式放在等号右侧,如下:
int vacationDays;
vacationDays = 10;
也可以将变量的声明和初始化放在同一行中,如下:
int vacationDays = 10;
2、常量
在 Java 中,使用关键字 final 指示常量,如下:
final double PRICE = 8.35;
关键字 final 表示这个变量只能被赋值一次,一旦被赋值后就不能再更改了,习惯上,常量名所有字母都大写。
在 Java 中,经常希望某个常量可以在一个类中的多个方法中使用,通常将这些常量称为类常量。可以使用关键字 static final 设置一个类常量,如下:
public static final double PRICE = 8.35;
需要注意的是:类常量通常定义在 main 方法的外部。因此,在同一个类的其他方法中也可以使用这个常量。如果这个常量被声明为 public ,那么其他类的方法也可以使用这个常量。
四、运算符
在 Java 中,使用算术运算符 +、-、*、/ 、% 表示加、减、乘、除、取模(求余)运算。当参与 / 运算的两个数都是整数时,表示整数除法,除不尽时取整数部分;当参与 / 运算的两个数其中有一个不是整数或都不是整数时,则表示浮点除法。
需要注意的是:整数被 0 除将会产生一个异常,而浮点数被 0 除将会得到无穷大或 NaN 的结果。
public void normal() {
// + - * / %
int num1 = 1024;
int num2 = 1024; int result = num1 + num2;
result = num1 - num2;
result = num1 * num2;
result = num1 / num2;
int orderId = 342234234;
int dbId = orderId % 8;
System.out.println("dbId = " + dbId);
}
1、数值类型的转换
经常需要将一种数值类型转换为另一种数值类型,下图给出了数值类型之间的合法转换:
在上图中有 6 个实心箭头,表示无信息丢失的转换;有 3 个虚箭头,表示可能有精度损失的转换。例如:123 456 789 是一个大整数,它所包含的位数比 float 类型所能表达的位数多,当将这个整型数值转换为 float 类型时,将会得到同样大小的结果,但却失去了一定的精度,如下:
public static void main(String[] args) { int n = 123456789;
float f = n;
System.out.println(f); // 1.23456792E8 }
当使用上面两个数值进行儿园操作时(例如:n + f,n 是整数,f 是浮点数),先要将两个数转换为同一种数据类型,然后再进行计算,如下:
- 如果两个数中有一个数是 double 类型,另一个操作数就换转换为 double 类型;
- 否则,如果其中一个数是 float 类型,另一个操作数将会转换为 float 类型;
- 否则,如果其中一个操作数是 long 类型,另一个操作数将会转换为 long 类型;
- 否则,两个数都将被转换为 int 类型;
2、强制类型转换
从上面我们可以看到,在必要的时候,int 类型的值将会自动转换为 double 类型。但另一方面,有时也需要将 double 类型转换成 int 类型。在Java 中,允许进行这种数值之间的转换,需要通过强制类型转换(cast)来实现这个操作,其语法如下:
public static void main(String[] args) { double d = 9.977;
int n = (int) d;
System.out.println(n); // }
这样,变量 n 的值为 9,强制类型转换通过截断小数部分将浮点值转换为整型。如果相对浮点数进行四舍五入运算,以便得到最接近的整数,那就需要使用 Math.round 方法:
public static void main(String[] args) { double d = 9.977;
int n = (int) Math.round(d);
System.out.println(n); // }
现在,变量 n 的值为 10。当调用 Math.round 的时候,仍然需要使用强制类型转换(int),其原因是 round 方法返回的结果是 long 类型,由于存在信息丢失的可能性,所以只有使用显式的强制类型转换才能够将 long 类型转换成 int 类型。
3、结合赋值和运算符
可以在赋值种使用二元运算符,这是一种很方便的简写形式,例如:x += 4;等价于:x = x + 4;一般要把运算符放在 = 的左边,例如:*= 或 %= 。
如果运算符得到一个值,其类型与左侧操作数的类型不同,就会发生强制类型转换。例如:如果 x 是一个 int 类型的变量,则语句 x+=3.5;是合法的,将会把 x 设置为 (int)(x + 3.5)。
4、自增与自减运算符
我们都知道:加 1、减 1 是数值变量最常见的操作。在 Java 种也提供了自增、自减运算符,n++将变量 n 的当前值加 1,n-- 则将 n 的当前值减 1。
实际上自增与自减运算符有两种形式,一种是将(++)或(--)放在变量后面,还有一种是将(++)或(--)放在变量前面,虽然放在变量前面和放在变量后面都会使变量加 1 或减 1,但在实际运用过程种,二者是有区别的,如下:
public static void main(String[] args) { int m = 7;
int n = 7;
int a = 2 * ++m; // a = 16,m = 8
int b = 2 * n++; // b = 14,n = 8
}
从上可以看出,前缀形式会先完成加 1,而后缀形式会使用变量原来的值。所以,建议不要再表达式种使用 ++ 或 --,因为这样的代码很容易让人困惑,而且会带来意想不到的bug。
5、关系运算符和逻辑运算符
关系运算符包括:==(相等)、!=(不相等)、>(大于)、<(小于)、>=(大于等于)、<=(大于等于);
逻辑运算符包括:||(或)、&&(与)、!(非);
其中,||(或)和 &&(与)运算符是按照 “短路” 的方式来求值的,如下:
如上图,表达式:flag1 || flag2 ,当 flag1 为 true 时,无论 flag2 为 true 或者是 false ,整个表达式都为 true,这时,如果 flag2是一个表达式的话,就不必计算了 。同样,表达式:flag2 && flag1,当 flag2 为 false 时,无论 flag1 为 true 或者是 false ,整个表达式都为 false。
最后一点,Java 支持三元操作符(?:),下面的表达式:
condition ? expression1 : expression2;
当条件 condition 为 true 时,整个表达式就取 expression1 的值,条件 condition 为 false 时,整个表达式就取 expression2 的值。
6、括号与运算符级别
下图给出了运算符的优先级别,如果不使用括号,就会按照下图给出的运算符优先级别次序进行计算。
Java学习之==>注释、数据类型、变量、运算符的更多相关文章
- Java学习笔记三——数据类型
前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...
- Java学习6——基本数据类型及其转换
Java常量: Java的常量值用字符串表示,区分不同的数据类型 整型常量123.浮点型常量3.14.字符常量'a'.逻辑常量true.字符串常量"helloworld". ps: ...
- 【原】Java学习笔记003 - 数据类型
package cn.temptation; public class Sample01 { public static void main(String[] args) { System.out.p ...
- Java学习之基本数据类型和引用数据类型区别
JAVA中分为基本数据类型和引用数据类型区别一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存 ...
- Java学习 (七)基础篇 变量
变量 变量顾名思义,就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型 Java变量是程序中最基本的存储单位,其要素包括变量名.变量类型和作用域 type varName [=val ...
- Java学习:常量和变量 的定义和注意事项
常量:在程序运行期间,固定不变的量. 常量的分类:1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量. 例如:"abc","Hello","12 ...
- [Java] 数据类型, 变量, 运算符, 表达式
title: [Java] 变量与表达式 你已经学会输出 Hello world 了, 那么现在, 我们来学习关于变量的知识 基本数据类型 在 Java 中, 有 8 种基本的数据类型: 名称 描述 ...
- Java学习笔记3、变量、数据类型
标识符 常见的命名规则(见名知意) 包名全部小写 类或者接口,一个单词:首字母大写,多个单词:每个单词首字母大写. 方法或者变量:一个单词:首字母小写,多个单词:从第二个单词开始,每个单词首字母大写. ...
- python学习道路(day2note)(数据类型,运算符,字符串,列表)
一,数据类型 1.1数字 数字分为int(整型),long(长整型),float(浮点型) 1.1.1 int整型的取值范围为 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31- ...
随机推荐
- 小米Air 13.3 安装Arch Linux
0. 前言 最近新买了一台小米Air 13.3,除了但键盘手感外都比较满意.我比较喜欢折腾Linux,但又不想放弃原有的Windows 10 Home,于是在原有的windows 10基础上再安装了A ...
- Open cup #2
A D:用前面的H去消去后面的K 然后求最长连续的M F:在每一列/行里面求最大的数然后组成最大的和ans[]里的比求出最大的 L:并查集 J:DP背锅题 01背包 先求出M种里每种的size和las ...
- Linux修改mysql配置文件
1.首先需要知道mysql数据库安装在什么位置 2.查找配置文件位置 然后在根据这个目录,查看配置文件在哪里了(路径后面加上 --verbose --help|grep -A 1 'Default o ...
- MySQL第二次安装随笔
找到之前的MySQL的安装包,重新安装MySQL. 1.设置环境变量,win10的可以右键此电脑-属性,在系统变量Path中添加mysql文件bin的路径 2.修改配置文件mydefault.ini( ...
- docker资源隔离实现方式
默认情况下,一个容器没有资源限制,几乎可以使用宿主主机的所有资源.docker提供了控制内存.cpu.block io.但是实际上主要是namespace和cgroup控制资源的隔离. Docker的 ...
- public、protected、private
public(公有):可以在任何地方被访问 protected(受保护):可以被其自身以及其子类和父类访问,类的对象也不可以访问 private(私有):只能被其定义所在的类访问,类的对象也不可以访问 ...
- SAP的春天回来么?
作为一个财务出身的码农,经常会关注在财务和编程的交叉领域,新兴的细分领域有:德勤的财务机器人,RPA机器人,FINTECH等等. 但是非要说一个便是sap.如果呈把用友成立之年算作sap元年,1988 ...
- Linux下获得本机IP(非127.0.0.1)
在Linux下用InetAddress.getLocalHost()方法获取本机IP地址,得到的结果总是:127.0.1.1.原来这个是etc/hosts文件中的配置,并非网卡的IP地址. 可用代码如 ...
- QT:设置布局边缘
QHBoxLayout * horizontalLayout = new QHBoxLayout; //setContentsMargins(int left, int top, int right, ...
- jquery设置css属性几种方式
用css()方法返回元素的样式属性 $("div").css("padding-left")); 用css()设置样式 $("div").c ...