Java基础教程——变量
变量
变量(variable)可以理解为一个“有名称的容器”,用于装各种不同类型的数据。编程人员通过对变量的访问和修改,操作内存中的数据。
Java是一种强类型(strongly typed)的语言,在编译时有严格的语法检查,需要为变量指定类型。
基本类型 | 整 型 | byte | 1byte |
(基本类型) | (整型) | short | 2byte |
(基本类型) | (整型) | int | 4byte |
(基本类型) | (整型) | long | 8byte |
(基本类型) | 浮点型 | float | 4byte |
(基本类型) | (浮点型) | double | 8byte |
(基本类型) | 字符型 | char | - |
(基本类型) | 布尔型 | boolean | - |
引用类型 | 数 组 | - | - |
(引用类型) | 接 口 | - | - |
(引用类型) | 类 | - | - |
*byte类型的范围是-128127,即-2^72^7-1
*char类型相当于无符号整数类型,一般认为是2字节(Unicode),但此说法有争议。
*字符串不是基本类型,字符串是类,属于引用类型。
*引用类型变量就是指针,只是Java不使用指针的说法。
标识符
用于程序变量、类、方法命名的符号。
|-包括字母、0-9、_、$(美元符号)组成
|-字母包括A-Z、a-z、中文、日文等
|-数字不打头
|-不能含有空格和特殊字符(@、#等)
|-不能和关键字重复
※关于$符号作为变量名
int $n=1;
Java 8 | VS2012(C#.Net Framework 4.5) | Dev C++(5.11@2015) |
---|---|---|
OK(有的Eclipse不支持) | Err | OK |
命名规范
Java的命名一般遵循“驼峰标识”:每个单词首字母大写,另外——
|-类:首字符大写
|-变量:首字母小写
|-方法:首字母小写
命名要求:见名知意
整型和字符型
public class Test整型 {
public static void main(String[] args) {
// -------------------------------------------------
// ---进 制-------------------------------------------
// -------------------------------------------------
int n2 = 0B10;// 0B二进制(binary)(JAVA 7新增)
System.out.println("n1=" + n2);
int n8 = 010;// 0八进制(octal)
System.out.println("n8=" + n8);
int n10 = 10;
System.out.println("n10=" + n10);
int n16 = 0XF;// 0X十六进制(hexadecimal)
System.out.println("n16=" + n16);
// -------------------------------------------------
// ---真正的长整形,需要加L-------------------------------
// -------------------------------------------------
// 即使声明long类型,系统也是转换为int类型
// int类型的最大值是2147483647,当超过这个值时,系统不会自动转换,编译无法通过。
// 需要在数字末尾加L,以示其为long类型
long lo1 = 2147483648L;
System.out.println("lo1=" + lo1);
// -------------------------------------------------
long lo2 = 10_0000_0000L;// Java7开始,数值可以加下划线以看清位数
System.out.println("lo2=" + lo2);
// -------------------------------------------------
// ---字符类型-------------------------------------------
// -------------------------------------------------
char c1 = 97;// 可直接赋值ASCII码对应的数值
System.out.println("c1 = " + c1);
char c2 = '字';// 字符用单引号,不分中英文
System.out.println("c2 = " + c2);
char c3 = '\'';// 单引号、双引号、反斜线(\)等特殊符号前面加转移符【\】
System.out.println("c3 = " + c3);
}
}
n1=2
n8=8
n10=10
n16=15
lo1=2147483648
lo2=1000000000
c1 = a
c2 = 字
c3 = '
浮点数
public class TestVar {
public static void main(String[] args) {
// ------------------------------------------------------------------
double d1 = 100.1;// double是默认浮点类型
float f1 = 100.1F;// float就必须加F
// ------------------------------------------------------------------
double d2 = .123;// 整数位可以不写
System.out.println(d2);
double d3 = 321E2;// 科学计数法形式(只有浮点数可以使用)
System.out.println(d3);
// ------------------------------------------------------------------
// 浮点数遵循IEEE 754标准,并不能精确表示一个数
double d4 = 19.9;
System.out.println(d4 * 3);
// 一般算钱的时候可以转为整数再算,或者使用BigDecimal类型计算
int n4 = (int) (d4 * 100);
int calc = n4 * 3;
double d5 = calc / 100;
System.out.println(d5);
// ------------------------------------------------------------------
System.out.println("浮点数可以除0:" + 10_0000.0 / 0);// Infinity:无穷大
System.out.println("整数不行:" + 10_0000 / 0);
}
}
0.123
32100.0
59.699999999999996
59.0
浮点数可以除0:Infinity
Exception in thread "main" java.lang.ArithmeticException: / by zero
at TestVar.main(TestVar.java:22)
类型转换
自动转换
转换条件
|--类型兼容
|--目标类型大于源类型
byte→ | short→ | int→ | long→ | float→ | double |
---|---|---|---|---|---|
↑char |
下图是合法的数据类型之间的转换,
6个实心箭头代表无损转换,3个虚线代表有可能丢失精度
public class 自动转换 {
public static void main(String[] args) {
byte _byte = 1;
char _char = 2;
short _short = _byte;
int _int = _short;
_int = _char;
long _long = _int;
float _float = _long;
double _double = _float;
}
}
强制类型转换:目标类型加括号,可能造成数据丢失,称为“缩小转换”。
double d = 9.9;
int n = (int)d;
编译器自动强转:
对于byte/short/char三种类型,如果等号右侧数值没有超过范围,编译器自动补上(xxx)。
int及更长的类型无需转换,因为右值默认是int型。
public class 编译器优化 {
public static void main(String[] args) {
System.out.println(" = " + System.getenv("JAVA_HOME"));
byte b1 = 127;// 右侧整数没有超过左侧类型范围,编译通过
byte b2 = 128;// 超过范围,编译失败:cannot convert from int to byte
byte b3 = 128 - 1;// 编译通过
byte b4 = b1 - 1;// 如果变量参与计算,编译器拒绝优化:cannot convert from int to byte
}
}
Java基础教程——变量的更多相关文章
- Java基础教程(5)--变量
一.变量 1.变量的定义 正如上一篇教程<Java基础教程(4)--面向对象概念>中介绍的那样,对象将它的状态存在域中.但是你可能仍然有一些疑问,例如:命名一个域的规则和惯例是什么?除 ...
- Java基础教程(18)--继承
一.继承的概念 继承是面向对象中一个非常重要的概念,使用继承可以从逻辑和层次上更好地组织代码,大大提高代码的复用性.在Java中,继承可以使得子类具有父类的属性和方法或者重新定义.追加属性和方法. ...
- Java基础教程(12)--深入理解类
一.方法的返回值 当我们在程序中调用方法时,虚拟机将会跳转到对应的方法中去执行.当以下几种情况发生时,虚拟机将会回到调用方法的语句并继续向下执行: 执行完方法中所有的语句: 遇到return语句: ...
- Java基础教程:注解
Java基础教程:注解 本篇文章参考的相关资料链接: 维基百科:https://zh.wikipedia.org/wiki/Java%E6%B3%A8%E8%A7%A3 注解基础与高级应用:http: ...
- Java基础教程:泛型基础
Java基础教程:泛型基础 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚 ...
- Java基础教程:多线程基础(1)——基础操作
Java:多线程基础(1) 实现多线程的两种方式 1.继承Thread类 public class myThread extends Thread { /** * 继承Thread类,重写RUN方法. ...
- Java基础教程:反射基础
Java基础教程:反射基础 引入反射 反射是什么 能够动态分析类能力的程序称为反射. 反射是一种很强大且复杂的机制. Class类 在程序运行期间,Java运行时系统始终为所有对象维护一个被称为运行时 ...
- Java基础教程:面向对象编程[2]
Java基础教程:面向对象编程[2] 内容大纲 访问修饰符 四种访问修饰符 Java中,可以使用访问控制符来保护对类.变量.方法和构造方法的访问.Java 支持 4 种不同的访问权限. default ...
- Java基础教程:面向对象编程[1]
Java基础教程:面向对象编程 内容大纲 Java语言概述 Java语言特点 1.Java为纯面向对象的语言,它能够直接反映现实生活中的对象.总之,Everything is object! 2.平台 ...
随机推荐
- Python+Post请求中涉及到多个参数data方法的应用
进行post请求,Python提供了httplib.urllib2,同时也可以引用requests模块的一些方法.前几天做持续集成,运用requests写了一个post请求.代码如下: import ...
- 【转】Key Presses
FROM:http://lazyfoo.net/tutorials/SDL/04_key_presses/index.php Key Presses Last Updated 6/11/19 Xing ...
- oracle 存储过程深入学习与应用
对于存储过程已经有过一周的学习时间了,但是之学到一些皮毛,争取根据基础,熟练后能进行深入. --1.存储过程创建存储过程的语法: CREATE [ OR REPLACE ] PROCEDURE pro ...
- 4G工业路由器的传输功率是越高越好吗?
现在人们越来越多的利用运营商网络进行家庭的Wi-Fi上网,早已是非常普遍的事情了.而无线路由器作为设备组网的重要组成部分,与路由器相关的话题.知识总会能够引发大家的热议.这里,以众山物联网研发.生产的 ...
- Java集合(类)框架(二)
1.Set集合 1.1 HashSet集合 HashSet底层为哈希码 不是数组,因此没有下标的概念,也就不能根据下标来查询某个元素 存放元素无序,不可重复 1.1.1 声明 Set<Strin ...
- C# Base64解码小工具编写
1 界面如下 2 关键代码如下 try { var callback = reqStr.Deserialize<dynamic>(); resStr = Newtonsoft.Json.J ...
- Docker(7)- docker images 命令详解
如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 作用 列出所有的本地镜像 语法格 ...
- 基于gin的golang web开发:使用数据库事务
在前文介绍访问数据库时介绍了github.com/jmoiron/sqlx包,本文基于这个包使用数据库事务. defer 在使用数据库事务之前,首先需要了解go语言的defer关键字.defer是go ...
- layui table表格详解
上次做table有些东西 忘记了 这次当作来个分析总结一下 跟大家共同学习 闲话不多说 直接上例子 代码: <form id="form1" runat="s ...
- currentColor在CSS的含义
currentColor属于CSS中的一个变量,当然也有人称之为CSS的自定义属性,其代表"当前颜色". 在CSS中设置了color的值后,相应CSS代码块(由两个花括号包裹的内容 ...