[Java入门笔记] Java语言基础(二):常量、变量与数据类型
常量与变量
什么是常量和变量
常量与变量都是程序在运行时用来存储数据一块内存空间
常量:
常量的值在程序运行时不能被改变,Java中声明常量必须使用final关键字。常量还可以分为两种意思:
第1种意思,就是一个值,这个值本身,我们可以叫它常量,举几个例子:
整型常量: 123
实型常量:3.14
字符常量: 'a'
逻辑常量:true、false
字符串常量:"helloworld"
这只是说法的问题,比如7这个数,我们就可以说“一个int类型的常量7 ”
第2种意思,表示不可变的变量,这种也叫常量,从语法上来讲也就是,加上final,使用final关键字来修饰某个变量,然后只要赋值之后,就不能改变了,就不能再次被赋值了
//声明一个int类型的常量i
final int i = 1;
//声明一个String对象类型的常量s,"Hello"字符串也是一个常量
final String s = "Hello";
需要注意的是:常量在声明时必须要给这个常量赋一个值。
变量:
是程序运行时用来存储数据的一块内存空间,是程序中最基本的存储单元,我们可以使用变量名访问变量。
Java变量的分类:
按声明位置分:
局部变量
成员变量
方法的参数是局部变量。
public class Test{
int i1 = ; //成员变量
public class static main(String[] args){ //args是方法的参数,所以也是局部变量
int i2 = ; //局部变量
}
}
按数据类型分:
基本数据类型变量
引用数据类型变量
public class Test{
int i = ; //基本数据类型变量
String s = new String(); //引用数据类型
}
使用变量的步骤:
我们使用变量前必须要先声明和赋值,声明和赋值可以分开,也可以结合为一步;
成员变量在声明时如果没有为其显式赋值,则会为其分配一个默认值。
public class Test{
int i3; //如果是成员变量,系统会为其默认分配一个值0
public static void main(String[] args){
int i1; //声明
i1 = ; //赋值
int i2 = ; //声明的同时为其赋值,2这个值也叫“直接量”
System.out.println(i1); //使用,将变量的值输出到Java控制台
}
}
基本数据类型
Java是一种强类型语言,所谓强类型,就是每个变量表达式在编译时就必须要有一个确定的数据类型。Java数据类型分为两大类:基本类型和引用类型。
引用数据类型为:类、接口、数组。
Java中的基本数据类型分为四类八种,分别为:
|
基本数据类型 |
|||||||
|
数值型 |
字符类型char 占用空间:2字节 |
布尔类型boolean 占用空间:1位 |
|||||
|
整数类型 |
浮点类型 |
||||||
|
字节byte |
短整型short |
整型int |
长整型long |
单精度型long |
双精度型double |
||
|
1字节 |
2字节 |
4字节 |
8字节 |
4字节 |
8字节 |
||
|
-128~127 |
-32768~32767 |
-2147483648 ~2147483647 |
-9223372036854774808 ~9223372036854774807 |
-3.403E38 ~3.403E38 |
-1.798E308 ~1.798E308 |
||
整数类型
- Java整形常量默认为int类型,声明long类型常量需要在后面加上L
- Java语言整形常量的3种表现形式
- 十进制整数:如12,-15,0
- 八进制整数:要求以0开头,如012
- 十六进制数:要求以0x或0X开头,如0x12
- 注:因为Java中可以使用十六进制方式赋值,因此类似于十进制10与十六进制A在内存中没有区别。
- Java7之后Java中也可以使用二进制的方式为整形赋值。
byte b1 = 127; //正确
byte b2 = 128; //错误,超出范围
short = b1; //正确,将另外一个变量的值赋给该变量,并且没有超出范围
int i1 = 12;//正确
int i2 = 012; //正确
int i3 = 0x12; //正确
System.out.println(i2); //输出10,因为i2是以8进制方式赋值的
System.out.println(i3); //输出18,因为i3是以16进制方式赋值的
long lo = 2147483648L; //long类型声明需要加上L
浮点类型
- Java浮点类型常量有两种表现形式:
- 十进制数形式:例如3.14 314.0 .314
- 科学计数法形式:如3.14e2 3.14E2 3.14E-2
- Java浮点类型常量默认double,如果要声明一个常量为float则需要在后面加F
- 因为精度问题,因此不要用浮点类型做等于比较
float f1 = 123;
float f2 = 123.4F;
double d1 = 1234.5;
double d = 3.141_592_65_36 //正确,java7后为了使比较长的数据较有可读性,可以在数字之间使用下划线
字符类型
- 字符类型是单引号括起来的单个字符
- Java字符采用Unicode编码,每个字符占两个字节,因而可以用十六进制编码形式表示,如 char c = '\u0061';
- 允许使用转义字符'\'将其后字符转为其他含义,如 char c = '\n';换行
- Java 中常用的转义字符

char c1 = '你'; //正确
char c2 = '你好'; //错误
char c3 = '\u9999'; //正确
System.out.println(c3); //输出'香'
布尔类型
用来存储"真","假"的类型,只有true和false两种值。
boolean b = true;
数据类型的转换
- 精度排序:(由低到高)
- Byte < short < int < long < float < double
- 由低到高转换时系统会自动转换;高精度转换为低精度时,会有精度损失,须强制转换;运算时,不同类型会自动转换为高精度类型。
byte b = 127;
short s = b; //会自动转换为short
b = (byte)s; //不会自动转换,需要强制转换
- double常量转换为float常量产生溢出时不能转换
public class Test { public static void main(String[] args) throws Exception {
double d = 12222222222222222222222222222222222222222222222222222.3;
float f = (float) d; //d的值已经超出了float的范围,所以转换会“溢出”,但是编译不会报错
System.out.println(f); //因为产生了溢出,所以输出“Infinity”
} }
- 系统在运算时会将数值自动转换为int型,将运算结果赋给原来的类型时需要进行强制转换。
byte b1 = ;
byte b2 = (byte) (b1 + ); //数值运算时会自动转换为int,所以计算出结果后将值再赋给byte类型变量b2时需要强制转换
- 如果常量值超出了默认类型时,必须在后面加大于该默认类型的数值类型开头字母,如 long num=30000000000L; 因为整型类型默认为int,但30000000000在int中放不下,所以要在后面加小写l或大写L,转换为long型。
- (数据类型名)要转换的变量或值 与 要转换的变量或值+转换符 这两种转换方式有本质上的区别,前一种表示它在计算机中是他原来的类型,再把它强制转换成现在的类型,后一种表示它一开始在计算机里就已经是转换完成了的这种类型。
long lo = (long);
long lo2 = 2L; //这两种声明或转换有本质区别
[Java入门笔记] Java语言基础(二):常量、变量与数据类型的更多相关文章
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- Java学习笔记:语言基础
Java学习笔记:语言基础 2014-1-31 最近开始学习Java,目的倒不在于想深入的掌握Java开发,而是想了解Java的基本语法,可以阅读Java源代码,从而拓展一些知识面.同时为学习An ...
- [Java入门笔记] Java语言简介
前言 学习Java有一段时间了,但是一直缺少一个系统的思想,现在重新通过书籍中.网上的文章,视频等资料,整理与回顾Java的知识点. 言归正传,让我们先从了解Java语言开始. Java语言的由来 J ...
- [Java入门笔记] Java语言基础(五):数组
简介 数组可用用于存储存储多个数据,Java的数组要求所有的数组元素具有一种相同的数据类型.一旦数组初始化完成,数组在内存中的空间被固定下来,长度不可改变,即使把数组的元素清空,所占用的空间依然被保留 ...
- [Java入门笔记] Java语言基础(四):流程控制
流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步顺序执行.中间没有任何的判断和跳转. 分支结构 Java提供两种分支结构: ...
- [Java入门笔记] Java语言基础(三):运算符
简介 运算符是一种特殊的符号,运算符是通过一定的运算规则操作一个或多个操作数,并生成结果的特定符号,运算符和操作数的有效组合称为表达式. Java中运算符主要分为以下几类: 赋值运算符 算术运算符 关 ...
- [Java入门笔记] Java语言基础(一):注释、标识符与关键字
注释 什么是注释? 注释是我们在编写代码时某段代码.某个方法.某个类的说明文字,方便大家对于代码的阅读.被注释的内容不会被编译.执行. Java的注释分为三种类型:单行注释.多行注释.文档注释. 单行 ...
- [Java入门笔记] 面向对象编程基础(一):类和对象
什么是面向对象编程? 我们先来看看几个概念: 面向过程程序设计 面向过程,是根据事情发展的步骤,按进行的顺序过程划分,面向过程其实是最为实际的一种思考方式,可以说面向过程是一种基础的方法,它考虑的是实 ...
- [Java入门笔记] 面向对象编程基础(三):成员变量和局部变量
在类中,变量根据定义的位置不同,可以分为成员变量和局部变量.
随机推荐
- Access数据库多表连接查询
第一次在Access中写多表查询,就按照MS数据库中的写法,结果报语法错,原来Access的多表连接查询是不一样的 表A.B.C,A关联B,B关联C,均用ID键关联 一般写法:select * fro ...
- 网页开发中文本编辑器UEditor的使用
首先看一下效果图: 首先我们需要来认识下UEditor,它是由百度web前端研发部开发所见即所得富文本web编辑器,并且是基于BSD协议的开源产品,允许自由使用和修改,开源就意味着可以自己来定制这个编 ...
- react入门(1)
这篇文章也不能算教程咯,就算是自己学习整理的笔记把. 关于react一些相关的简介.优势之类的,随便百度一下一大堆,我就不多说了,可以去官网(http://reactjs.cn/)看一下. 这片主要讲 ...
- CSS清除浮动
今天看到一篇文章关于清除浮动的,突然间脑袋短路了,咦?为什么要清除浮动?原谅我的无知,搜了下原来是这样,又倒腾出原来的笔记,唉,本来就有记录啊,而且也会经常用到,用的久了连原理都忘了.恩,防止自己再犯 ...
- Xamarin.Android和UWP之MVVM的简单使用(二)
0x01 前言 前面一篇,Xamarin.Android和UWP之MVVM的简单使用(一),主要讲了MvvmLight的简单使用 这篇主要讲讲MvvmCross的简单使用,例子的话,还是和上篇的一样. ...
- (1-1)文件结构的升级(Area和Filter知识总结) - ASP.NET从MVC5升级到MVC6
ASP.NET从MVC5升级到MVC6 总目录 MVC5项目结构 带有Areas和Filter的项目结构 一般来说,小的MVC项目是不考虑领域的,但是,如果是稍微复杂一点的项目,往往是需要领域这个概念 ...
- de4dot3.14更新文件打包下载
刚发现de4dot更新了,虽然只是10月份的文件更新,并未发布新的release,但好多人还不会编译... 关于de4dot有何功能就不再讲了. 本文主要提供编译通过后的打包文件下载. 首先下载de4 ...
- 从零开始学Python第七周:面向对象进阶(需修改)
一,类的属性 (1)示例 通过属性获取已经创建对象的个数 class Plane: pCount = 0 #类属性 def __init__(self,name,category): self.nam ...
- 关于图片的PNG与JPG、JIF格式
一:GIF(Graphics Interchange Format) 简介 GIF图形交换格式是一种位图图形文件格式,以8位色(即256种颜色)重现真彩色的图像. 它实际上是一种压缩文档,采用LZW压 ...
- 屌丝giser成长记-研一篇(上)
2011年本科毕业之后,我选择了保研GIS研究生,继续了我的GIS研究生涯,读研的童鞋们注意了,读研选择什么样的导师很重要,因为不同的导师有不同的人脉,从浅一点的来说,导师手头的开发项目多的话,你自己 ...