之前的文章我们介绍了一下用 IDEA 编辑器创建一个 Java 项目并输出 HelloWorld,本章我们来看一下 Java 中的变量和基本数据类型。

在这之前我们先来看一下 Java 中的关键字,这些关键字不能被用作变量名称。

类别 关键字 说明
访问控制 private 私有的
protected 受保护的
public 公共的
类、方法和变量修饰符 abstract 声明抽象
class
extends 扩充,继承
final 最终值,不可改变的
implements 实现(接口)
interface 接口
native 本地,原生方法(非 Java 实现)
new 新,创建
static 静态
strictfp 严格,精准
synchronized 线程,同步
transient 短暂
volatile 易失
程序控制语句 break 跳出循环
case 定义一个值以供 switch 选择
continue 继续
default 默认
do 运行
else 否则
for 循环
if 如果
instanceof 实例
return 返回
switch 根据值选择执行
while 循环
错误处理 assert 断言表达式是否为真
catch 捕捉异常
finally 有没有异常都执行
throw 抛出一个异常对象
throws 声明一个异常可能被抛出
try 捕获异常
包相关 import 引入
package
基本类型 boolean 布尔型
byte 字节型
char 字符型
double 双精度浮点
float 单精度浮点
int 整型
long 长整型
short 短整型
变量引用 super 父类,超类
this 本类
void 无返回值
保留关键字 goto 是关键字,但不能使用
const 是关键字,但不能使用
null

Java注释

类似于 C/C++、Java 也支持单行以及多行注释。注释中的字符将被 Java 编译器忽略。

 package com.demo;
/** 这是第一个Java程序
* 这是一个多行注释的示例
*/
public class HelloWorld {
public static void main(String[] args) {
// 这是单行注释的示例
/* 这个也是单行注释的示例 */
System.out.println("Hello World");
}
}

Java 基本数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

int

int 数据类型是32位、有符号的以二进制补码表示的整数,占4个字节;

  • 最小值 -2,147,483,648(-2^31),
  • 最大值 2,147,483,647(2^31 - 1),
  • 整数直接量默认为 int 型,不能超范围,否则会编译错误,
  • 两个整数相除,结果还是整数,小数位无条件舍弃,
  • 运算时超出范围会发生溢出
 package com.demo;

 public class HelloWorld {
public static void main(String[] args) {
// int a = "123"; 编译错误
// int a = 123.123; 编译错误
// int a = 2147483648; 编译错误,超出最大值 2147483647
// int a = -2147483649; //编译错误,超出最大值 -2147483648
int a = 1; // 声明变量 a 为整数 1
int b = 2147483647;
int c;
c = 1 + b;
System.out.println(c); // -2147483648,运算超出范围发生溢出
c = 2 + b;
System.out.println(c); // -2147483647,运算超出范围发生溢出
}
}

long

long 数据类型是 64 位、有符号的以二进制补码表示的整数,8个字节;

  • 最小值是 -9,223,372,036,854,775,808(-2^63)
  • 最大值是 9,223,372,036,854,775,807(2^63 -1)
  • 长整型直接biang为在数字后面加 l 或 L
  • 算数运算时有可能超范围,建议在第一个数字后加 l 或 L
  • System.currentTimeMillis( ) 用于获取自 1970.1.1 零时至此时此刻所经历的毫秒数,用 long 存储。
 public class HelloWorld {
public static void main(String[] args) {
// long a = "123"; 编译错误
// long a = 123.123; 编译错误
// long a = 9223372036854775808L; //编译错误,超出最大值 9223372036854775807
// long a = -9223372036854775809L; //编译错误,超出最大值 -9223372036854775808
long a = 100L; // 声明变量 a 为长整数 100
long b = 9223372036854775807L;
long c;
c = 1 + b;
System.out.println(c); // -9223372036854775808,运算超出范围发生溢出
c = 2 + b;
System.out.println(c); // -9223372036854775807,运算超出范围发生溢出
long d = System.currentTimeMillis();
System.out.println(d); // 当前时间毫秒数 1558516383355
}
}

byte

byte 数据类型是8位、有符号的,以二进制补码表示的整数;占1个字节

  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 默认值是 0;
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • byte类型运算的时候自动转换为int类型
 public class HelloWorld {
public static void main(String[] args) {
// byte a = "123"; 编译错误
// byte a = 123.123; 编译错误
// byte a = 128; 编译错误,超出最大值 127
// byte a = -129; //编译错误,超出最大值 -128
byte a = 1; // 声明变量 a 为byte 1
byte b = 127;
// b = 1 + b;
// System.out.println(b); // 编译错误,byte 参与运算自动转为 int // 可以转换为 byte 型数据
b = (byte) (1 + b);
System.out.println(b); // -128,超出运算范围发生溢出
}
}

short

short 数据类型是 16 位、有符号的以二进制补码表示的整数,占2个字节

  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • 默认值是 0
  • short 数据类型也可以像 byte 那样节省空间。一个 short 变量是int型变量所占空间的二分之一;
  • short 类型运算的时候自动转换为int类型
 public class HelloWorld {
public static void main(String[] args) {
// short a = "123"; 编译错误
// short a = 123.123; 编译错误
// short a = 32768; 编译错误,超出最大值 32767
// short a = -32769; //编译错误,超出最大值 -32768
short a = 1; // 声明变量 a 为short 1
short b = 32767;
// b = 1 + b;
// System.out.println(b); // 编译错误,short 参与运算自动转为 int // 可以转换为 short 型数据
b = (short) (1 + b);
System.out.println(b); // -32768,超出运算范围发生溢出
}
}

double,float

double 浮点型数据,数据类型是双精度、64 位

float 浮点型数据,数据类型是单精度、32位

  • 浮点数的默认类型为 double 类型;
  • 表示 float 型数据的直接量需要加 f 或 F 后缀。
  • double 类型的精度值是 float 类型的两倍
  • 大多数场合使用 double 表示浮点型
  • float 在储存大型浮点数组的时候可节省内存空间
  • 浮点数运算时,可能会发生摄入误差
  • 浮点数不能用来表示精确的值,如货币
 public class HelloWorld {
public static void main(String[] args) {
// float a = "123"; 编译错误
// double a = "123"; 编译错误
float a = 5.0F;
a = a - 4.3F;
System.out.println(a); // 0.6999998 double b = 5.0;
b = b - 4.3;
System.out.println(b); // 0.7000000000000002
}

boolean

布尔型,只能取值为 true 或 false,占一个字节,默认为 false

 public class HelloWorld {
public static void main(String[] args) {
// boolean a = "111"; // 编译错误
boolean a = true;
System.out.println(a); // true
boolean b = false;
System.out.println(b); // false
}
}

char

char类型是一个单一的 16 位 Unicode 字符;

  • 最小值是 \u0000(即为0);
  • 最大值是 \uffff(即为65,535);
  • char 数据类型可以储存任何字符;
  • 任意单字符需加单引号 ' '
 public class HelloWorld {
public static void main(String[] args) {
// char a = "123"; 编译错误
// char a = 123.123; 编译错误
// char a = 65536; 编译错误,超出最大值 65535
// char a = -1; //编译错误,超出最小值 0
// char a = '197'; //编译错误 因为有单引号,表示是字符,只允许放单个字符。
// char a = 'a' + b; //编译错误 因为b是一个赋值的变量。
// char a = '中' + '国' + '国' + '国'; //报错 int转char有损失。因为结果已经超出char类型的范围。
// char a = '中' + "国"; //报编译错误 String无法转换为char。
char a='1'; //任意单个字符,加单引号。
char a='中'; //任意单个中文字,加单引号。
char a = 'a' + 'b'; //Ã char类型相加,提升为int类型,输出对应的字符。
int a = 'a' + 'b'; //195 195没有超出int范围,直接输出195。
char a = 197; //Ã 输出字符编码表中对应的字符。
char a = 'a' + 1; //b 提升为int,计算结果98对应的字符是b。
char a = '中' + '国';//42282。
int a = '中' + '国' + '国' + '国'; //
char a = '中' + 1; //丮 //1是int,结果提升为int,输出对应的字符。 System.out.println('中' + "国"); //中国 没有变量附值的过程。String与任何字符用“+”相连,转换为String。
}
}

不同的基本类型可以直接相互转换

  • 自动转换(隐式转换):从小类型到到类型可以自动完成,类型的大小关系:byte -> short -> int -> long -> float -> double,其中 char -> int 单独。
  • 强行转换:从大类型到小类型需要强制转换符:(需要转换的类型)变量。但这样转换可能会造成精度损失或者溢出。

在上面的示例代码中已经演示过强转了,这里就不在举例了。

隐含强制类型转换

  • 1. 整数的默认类型是 int。

  • 2. 浮点型不存在这种情况,因为在定义 float 类型时必须在数字后面跟上 F 或者 f。

Java 从入门到进阶之路(二)的更多相关文章

  1. Java 从入门到进阶之路(二十)

    在之前的文章我们介绍了一下 Java 中的包装类,本章我们来看一下 Java 中的日期操作. 在我们日常编程中,日期使我们非常常用的一个操作,比如读写日期,输出日志等,那接下来我们就看一下 Java ...

  2. Java 从入门到进阶之路(十二)

    在之前的文章我们介绍了一下 Java 类的重写及与重载的区别,本章我们来看一下 Java 类的 private,static,final. 我们在之前引入 Java 类概念的时候是通过商场收银台来引入 ...

  3. Java 从入门到进阶之路(二十一)

    在之前的文章我们介绍了一下 Java 中的日期操作,本章我们来看一下 Java 集合框架中的Collection. 早在 Java 2 中之前,Java 就提供了特设类.比如:Dictionary, ...

  4. Java 从入门到进阶之路(二十二)

    在之前的文章我们介绍了一下 Java 中的  集合框架中的Collection 中的一些常用方法,本章我们来看一下 Java 集合框架中的Collection 的迭代器 Iterator. 当我们创建 ...

  5. Java 从入门到进阶之路(十八)

    在之前的文章我们介绍了一下 Java 中的正则表达式,本章我们来看一下 Java 中的 Object. 在日常生活中,任何事物我们都可以看做是一个对象,在编程中是同样的道理,在 Java 编程中其实更 ...

  6. Java 从入门到进阶之路(一)

    写在前面:从本片文章开始,将记录自己学习 Java 的点滴路程,目标定的并不是让自己成为一个 Java 高手,而是让自己多掌握一门语言,使自己的知识面更广一些,在学习 Java 的过程中如有不对的地方 ...

  7. Java 从入门到进阶之路(三)

    之前的文章我们介绍了 Java 中的变量和基本数据类型,本章我们来看一下 Java 的运算符和表达式. 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操 ...

  8. Java 从入门到进阶之路(四)

    之前的文章我们介绍了 Java 的运算符和表达式,本章我们来看一下 Java 的循环结构. 循环是程序设计语言中反复执行某些代码的一种计算机处理过程,是一组相同或相似语句被有规律的重复性进行. 循环的 ...

  9. Java 从入门到进阶之路(五)

    之前的文章我们介绍了 Java 的循环结构,本章我们来看一下 Java 的数组 数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同. 数组 - 相同数据类型的元 ...

随机推荐

  1. js④

    for循环代码执行顺序 1.执行小括号里面的第一个语句 2.判断小括号里面第二个语句的布尔值,如果为false,就会结束掉整个for循环,如果为true,就会执行大括号里面的语句块; 3.每次执行完大 ...

  2. css3 @font-face

    很长时间,web设计师总是得用一些“web-safe”字体,英文用body{font-family:"corbel", Arial, Sans-serif;  }中文用body{f ...

  3. UVa1212 Duopoly(最小割)

    题目大概说有两家通讯公司,它们分别有几个投标,投标各有价值且各个投标都包含几个频道,相同公司的各个投标包含频道都是互不相同的,而频道不能被同时选用.问怎么选择采取哪家公司哪些投标使得价值最大. 如此建 ...

  4. 怎样成为全栈工程师(Full Stack Developer)?

    "Facebook 工程师说 Facebook 只招 full stack engineer,那么 Facebook engineer 都是怎样的人啦."? 具体经验不重要,重要的 ...

  5. Java中删除文件、删除目录及目录下所有文件(转)

    原文链接:Java中删除文件.删除目录及目录下所有文件 知识点:File.delete()用于删除“某个文件或者空目录”!所以要删除某个目录及其中的所有文件和子目录,要进行递归删除,具体代码示例如下: ...

  6. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q25-Q27)

    Question25You develop a new publishing page layout named MyPage.aspx for a SharePoint site.You creat ...

  7. 【读书笔记】iOS-对象初始化

    一,分配对象. 分配是一个样的对象诞生的过程.最美好的时刻,是从操作系统获得一块内存并将其指定为存放对象的实例变量的位置.向某个类发送alloc消息的结果,就是为该类分配一块足够大的内存,以存放该内的 ...

  8. mysql几个命令

    1.格式化输出 select * from mysql.user\G 2.显示版本 show version() 3.显示引擎 show engines mysql> show engines; ...

  9. Asp.Net Core 2.0 项目实战(9) 日志记录,基于Nlog或Microsoft.Extensions.Logging的实现及调用实例

    本文目录 1. Net下日志记录 2. NLog的使用     2.1 添加nuget引用NLog.Web.AspNetCore     2.2 配置文件设置     2.3 依赖配置及调用     ...

  10. 自定义SpringBoot启动banner

    序: springboot启动的时候会有一个启动logo似的东西,如图,这个logo似的东西叫做banner,本文小计修改此banner显示与关闭banner.没什么用,有兴趣可以玩玩-- 正文: 自 ...