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.平台 ...
随机推荐
- F. Make It Connected 解析(思維、MST)
Codeforce 1095 F. Make It Connected 解析(思維.MST) 今天我們來看看CF1095F 題目連結 題目 給你\(n\)個點,每個點\(u\)還有一個值\(a[u]\ ...
- 优雅手撕bind函数(面试官常问)
优雅手撕bind函数 前言: 为什么面试官总爱让实现一个bind函数? 他想从bind中知道些什么? 一个小小的bind里面内有玄机? 今天来刨析一下实现一个bind要懂多少相关知识点,也方便我们将零 ...
- 如何在Debian上安装和使用PHP Composer
1.条件 shell使用sudo权限访问正在运行的debian系统. 必须安装和配置5.3或更高版本的PHP. 2.在Debian上安装Composer 可以通过运行以下命令从getcomposer. ...
- Linux 系统编程 学习:11-线程:线程同步
Linux 系统编程 学习:11-线程:线程同步 背景 上一讲 我们介绍了线程的属性 有关设置.这一讲我们来看线程之间是如何同步的. 额外安装有关的man手册: sudo apt-get instal ...
- 超实用的14个 Spring MVC “隐藏”技巧,用了都说好!
通常,在Spring MVC中,我们编写一个控制器类来处理来自客户端的请求.然后,控制器调用业务类来处理与业务相关的任务,然后将客户端重定向到逻辑视图名称,该名称由Spring的调度程序Servlet ...
- python 学习小记之冒泡排序
lst =[11,22,44,2,1,5,7,8,3] for i in range(len(lst)): i = 0 while i < len(lst)-1: ...
- css 两边宽度固定中间自适应宽度
#content_left{ //左 width:73px; height:100px; vertical-align:middle; margin-right:-100px; float:lef ...
- pytest框架执行自动化测试时使用pycharm正常运行,使用cmd或Terminal报错:Hint: make sure your test modules/packages have valid Python names.
问题描述: 使用pytest框架做接口自动化测试时,在测试用例所在的.py文件下使用pycharm的run功能可以正常跑用例,使用cmd运行窗口或Terminal则报下图中的错误: Hint: mak ...
- CSS总结(一)
1 css常用的一些属性 color: 文字颜色(前景色) font-size: 文字大小 font-family: 字体,比如:微软雅黑, 黑体,宋体,仿宋体,"Times New Rom ...
- python08豆瓣电影 爬虫 BeautifulSoup + Reuqests
主要思路 请求豆瓣的链接获取网页源代码 然后使用 BeatifulSoup 拿到我们要的内容 最后就把数据存储到 excel 文件中