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.平台 ...
随机推荐
- hibernate.cfg.xml 配置SQL server,MySQL,Oracle
1.连接SQL server <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hiberna ...
- git 上传代码报错eslint --fix found some errors. Please fix them and try committing again.
在提交时用下面这句 git commit --no-verify -m "提交时的注释"
- 简单入门Rabbitmq
什么是RabbitMQ RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写.支持多种客户端,如:Python.Ruby..NET.Java.JMS.C.PHP.ActionScr ...
- solr 文档二
SOLR 5.5.5文档 参考博文: http://blog.csdn.net/matthewei6/article/details/50620600 作者:毛平 时间:2018年1月15日 17:3 ...
- pip升级失败
python -m pip install --upgrade pip失败 解决办法: easy_install pip
- 80386学习(一) 80386CPU介绍
一.80386CPU介绍 Inter80386CPU是Inter公司于1985年推出的第一款32位80x86系列的微处理器.80386的数据总线是32位的,其地址总线也是32位,因而最大可寻址4GB的 ...
- 03 . Vue基础之计算属性,组件基础定义和使用
vue组件 fetch请求组件 fetch XMLHttpRequest是一个设计粗糙的API, 配置和调用方式非常混乱,而且基于事件的异步模型写起来不友好,兼容性不好. <!DOCTYPE h ...
- 第05组 Alpha冲刺 (3/6)
.th1 { font-family: 黑体; font-size: 25px; color: rgba(0, 0, 255, 1) } #ka { margin-top: 50px } .aaa11 ...
- 动态JavaWeb工程的架构问题
B/S 网络应用的分层 前端(表示层) 后端( 业务逻辑层, 数据库访问层 ) 分层的目的->分模块->解耦 1,表示层---和用户直接交互 html,js,css, servlet 2, ...
- 大数据和Hadoop平台介绍
大数据和Hadoop平台介绍 定义 大数据是指其大小和复杂性无法通过现有常用的工具软件,以合理的成本,在可接受的时限内对其进行捕获.管理和处理的数据集.这些困难包括数据的收入.存储.搜索.共享.分析和 ...