一、注释

在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学习之==>注释、数据类型、变量、运算符的更多相关文章

  1. Java学习笔记三——数据类型

    前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...

  2. Java学习6——基本数据类型及其转换

    Java常量: Java的常量值用字符串表示,区分不同的数据类型 整型常量123.浮点型常量3.14.字符常量'a'.逻辑常量true.字符串常量"helloworld". ps: ...

  3. 【原】Java学习笔记003 - 数据类型

    package cn.temptation; public class Sample01 { public static void main(String[] args) { System.out.p ...

  4. Java学习之基本数据类型和引用数据类型区别

    JAVA中分为基本数据类型和引用数据类型区别一.基本数据类型: byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认值0 short:短整型,在内存 ...

  5. Java学习 (七)基础篇 变量

    变量 变量顾名思义,就是可以变化的量 Java是一种强类型语言,每个变量都必须声明其类型 Java变量是程序中最基本的存储单位,其要素包括变量名.变量类型和作用域 type varName [=val ...

  6. Java学习:常量和变量 的定义和注意事项

    常量:在程序运行期间,固定不变的量. 常量的分类:1.字符串常量:凡是用双引号引起来的部分,叫做字符串常量. 例如:"abc","Hello","12 ...

  7. [Java] 数据类型, 变量, 运算符, 表达式

    title: [Java] 变量与表达式 你已经学会输出 Hello world 了, 那么现在, 我们来学习关于变量的知识 基本数据类型 在 Java 中, 有 8 种基本的数据类型: 名称 描述 ...

  8. Java学习笔记3、变量、数据类型

    标识符 常见的命名规则(见名知意) 包名全部小写 类或者接口,一个单词:首字母大写,多个单词:每个单词首字母大写. 方法或者变量:一个单词:首字母小写,多个单词:从第二个单词开始,每个单词首字母大写. ...

  9. python学习道路(day2note)(数据类型,运算符,字符串,列表)

    一,数据类型 1.1数字 数字分为int(整型),long(长整型),float(浮点型) 1.1.1 int整型的取值范围为 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31- ...

随机推荐

  1. 第02章 新手必须掌握的 Linux 命令

  2. document.compatMode,quirks mode and standards mode

    Document.compatMode Indicates whether the document is rendered in Quirks mode or Standards mode. Syn ...

  3. 设置apache服务器的访问证书,支持https访问,windows

    windows下载安装openssl http://slproweb.com/products/Win32OpenSSL.html windows证书的生成 安装成功后命令行执行 1.私钥,生成的文件 ...

  4. 如何使用git回退部分修改(转)

    如何使用git回退部分修改(转)     很多时候,git新手容易误操作,比如,在levelIISZ-1.4.dev分支下,运行了git pull idc cpp-1.0的结果,这样做麻烦很大,经常导 ...

  5. PHP preg_match正则表达式

    行定位符 ^表示开始 $表示结束 preg_match(模式,待搜索的字符串,$matches) 其中matches为可选参数,一旦匹配上,可以返回匹配结果 举个例子: $pattern = '/#\ ...

  6. 2017 网易游戏互娱游戏研发4.21(offer)

    网易游戏互娱(offer) 去年这个时候就参加过网易游戏的实习生招聘,到今年总共收到了4次拒信.不过这次运气好,终于get了最想要的offer.去年实习生互娱笔试挂,秋招笔试挂,今年春招互娱投了连笔试 ...

  7. hiho #1062 : 最近公共祖先·一(树,最近祖先)

    #1062 : 最近公共祖先·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho最近发现了一个神奇的网站!虽然还不够像58同城那样神奇,但这个网站仍然让小Ho乐在 ...

  8. 【Layui】当Layui数据表格和Layui下拉框组合时发生的问题

    关于Layui数据表格用下拉框显示问题 如图所示 可以看见当点击下拉框时下拉选项被下拉框覆盖 此时你需要在数据表格渲染完成时的回调内添加如下代码即可 $(".sel_scrq"). ...

  9. JAVA笔记10-抽象类

    (1)abstrac关键字类修饰的类是抽象类,用abstract修饰的方法是抽象方法: (2)含有抽象方法的类必须被定义为抽象类: (3)抽象类必须被继承,抽象方法必须被重写(或者将子类也声明为抽象类 ...

  10. 关于Environment类的使用

    import org.springframework.core.env.Environment; EnvironmentAware 如何引用这个类1.可以通过 @Autowired织入Environm ...