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.平台 ...
随机推荐
- Luogu P6830 [IOI2020]Connecting Supertrees
题意 好复杂,我就不写了. 题解 口胡了一下,发现我居然会 IOI 的题? 首先发现有 \(3\) 一定不合法,因为连通块里面有一个环的话 \(p_{i,j}\) 最多为 \(2\),有两个环的话就存 ...
- 4G DTU是什么?
要从任何设备(个人计算机.平板电脑或智能手机)访问Internet,需要DTU或热点.大多数宽带和移动DTU在"4G"或第四代网络系统上运行.虽然互联网连接的许多基本原则与4G D ...
- 阿里P6晋升到P7是一个坎吗? P7 晋升总结
作者:程序之心丁仪 来源:https://chengxuzhixin.com/blog/post/P6_jin_sheng_dao_P7_zong_jie.html 公众号停更了挺长一段时间,首先说声 ...
- 1,web项目工作流程
1.1 了解web程序工作流程 .1.2django生命周期
- MIT 6.S081 Lab5 Copy-On-Write Fork
前言 最近绝大多数的空闲时间都拿来锤15-445了,很久没动6.S081.前几天回头看了一下一个月前锤完的Lazy Allocation,自己写的代码几乎都不认识了.......看来总结之类的东西最好 ...
- 微信小程序授权页面
这里也是比较简单的 直接复制粘贴就可以用,可能图片位置不对.. <template> <view id="imporwer"> <image src= ...
- HashMap的put kv,是如何扩容的?
HashMap的put kv,是如何扩容的? 描述下HashMap put(k,v)的流程? 它的扩容流程是怎么样的? HashMap put(k,v)流程 通过hash(key方法)获取到key的h ...
- C3P0和Druid数据库连接池
目录 C3P0连接池 步骤: C3P0初始化: 创建C3P0工具类: 创建C3P0测试类: Druid连接池(由阿里巴巴提供的数据库连接池实现技术) 步骤: Druid初始化: 创建Druid工具类: ...
- 1、Web应用
一 Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览 ...
- 3.4 spring5源码系列--循环依赖的设计思想
前面已经写了关于三篇循环依赖的文章, 这是一个总结篇 第一篇: 3.1 spring5源码系列--循环依赖 之 手写代码模拟spring循环依赖 第二篇: 3.2spring源码系列----循环依赖源 ...