[Java入门笔记] Java语言基础(二):常量、变量与数据类型
2019独角兽企业重金招聘Python工程师标准>>>
常量与变量
什么是常量和变量
常量与变量都是程序在运行时用来存储数据一块内存空间
常量:
常量的值在程序运行时不能被改变,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 = 1; //成员变量public class static main(String[] args){ //args是方法的参数,所以也是局部变量int i2 = 2; //局部变量 } }
按数据类型分:
基本数据类型变量
引用数据类型变量
public class Test{int i = 1; //基本数据类型变量String s = new String(); //引用数据类型 }
使用变量的步骤:
第一步:声明一个变量——根据类型在内存中开辟空间
第二步:赋值——将数据存入空间
第三步:使用变量——得到内存中的数据使用
我们使用变量前必须要先声明和赋值,声明和赋值可以分开,也可以结合为一步;
成员变量在声明时如果没有为其显式赋值,则会为其分配一个默认值。
public class Test{int i3; //如果是成员变量,系统会为其默认分配一个值0 public static void main(String[] args){int i1; //声明i1 = 1; //赋值int i2 = 2; //声明的同时为其赋值,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 = 1; byte b2 = (byte) (b1 + 2); //数值运算时会自动转换为int,所以计算出结果后将值再赋给byte类型变量b2时需要强制转换
- 如果常量值超出了默认类型时,必须在后面加大于该默认类型的数值类型开头字母,如 long num=30000000000L; 因为整型类型默认为int,但30000000000在int中放不下,所以要在后面加小写l或大写L,转换为long型。
- (数据类型名)要转换的变量或值 与 要转换的变量或值+转换符 这两种转换方式有本质上的区别,前一种表示它在计算机中是他原来的类型,再把它强制转换成现在的类型,后一种表示它一开始在计算机里就已经是转换完成了的这种类型。
long lo = (long)2; long lo2 = 2L; //这两种声明或转换有本质区别
转载于:https://my.oschina.net/u/2263361/blog/681305
[Java入门笔记] Java语言基础(二):常量、变量与数据类型相关推荐
- [Java入门笔记] 面向对象编程基础(二):方法详解
2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...
- c语言常量类型转换,c语言基础教程常量变量和类型转换,免费版.doc
c语言基础教程常量变量和类型转换,免费版 第二章??????常量变量和类型转换2.1.1数字常量??? 数字常量包括整型常量和浮点型常量,浮点型常量又称实数.????1.整型常量???? HYPERL ...
- JAVA入门笔记·JAVA名词及环境搭建
文章目录 一.JAVA主要特征 二.JAVA名词解释 三.环境搭建 一.JAVA主要特征 面向对象 分布式 跨平台 更安全 二.JAVA名词解释 JRE(运行环境) 包括JAVA虚拟机和JAVA程序所 ...
- VBA语言(二)变量、数据类型和常量
一.变量 1.变量:是一个简单的用来引用一条数据的名称. 2.命名规则: 变量名称不可以以数字开始,也不可以含有空格 如果变量中存在多个词语,可用下划线连接 在VBA中有一些有特殊意义的语句,不可以用 ...
- java实型常量用十六进制表示_[Java入门笔记] Java语言基础(二):常量、变量与数据类型...
常量与变量 什么是常量和变量 常量与变量都是程序在运行时用来存储数据一块内存空间 常量: 常量的值在程序运行时不能被改变,Java中声明常量必须使用final关键字.常量还可以分为两种意思: 第1种意 ...
- [Java入门笔记] Java语言基础(四):流程控制
2019独角兽企业重金招聘Python工程师标准>>> 流程控制指的是在程序运行的过程中控制程序运行走向的方式.主要分为以下几种: 顺序结构 顺序结构,顾名思义,是指程序从上往下逐步 ...
- [GO语言基础] 二.编译运行、语法规范、注释转义及API标准库知识普及
作为网络安全初学者,会遇到采用Go语言开发的恶意样本.因此从今天开始从零讲解Golang编程语言,一方面是督促自己不断前行且学习新知识:另一方面是分享与读者,希望大家一起进步.前文介绍了什么是GO语言 ...
- java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础
<实验项目1 Java开发环境与语言基础>由会员分享,可在线阅读,更多相关<实验项目1 Java开发环境与语言基础(14页珍藏版)>请在人人文库网上搜索. 1.实验项目1 Ja ...
- java入门笔记合集(杂乱)(2)
java入门笔记合集(杂乱)2 StringBuilder 这是一个容器,可以和String搭配起来用 package day1;import java.util.Scanner;public cla ...
最新文章
- 一文详解OpenCV中的CUDA模块
- String,StringBuffer,StringBulider 三者的区别
- POJ - 2914 Minimum Cut(全局最小割-Stoer_Wagner)
- flex 下对齐_flex布局
- 嵌入式Linux项目开发的几个步骤
- 终端服务器超出了最大允许连接数解决办法
- 如何进行美国站税务审核
- spark 集群优化
- 2143.replace.favo.xrcch.com Dns劫持解决方案
- 解决css样式中first-child和last-child不生效的问题
- 机器学习笔记之狄利克雷过程(五)——基于狄利克雷过程的预测任务
- android开发非-转动圆形菜单
- 生鲜行业全链路数字化解决方案(数商云)
- 无法对计算机进行搜索,简单几步解决win10电脑搜索功能不能用了的问题
- 软件外包那些坑(一)
- java 车牌号归属地_获取车牌类型示例代码
- 数字通信学习笔记——基带信号解调
- Java8新特性学习(lambda,函数式接口,stream,Optional)
- ilm 和dlm差异_差异表达基因的几种筛选方法.pdf
- 百练-4151 电影节 贪心
热门文章
- python函数分为_python 函数
- seo从入门到精通_SEO入门到精通(七):SEO工作的流程是什么?
- 乐高小颗粒履带机器人_玩转乐高大颗粒积木(四十二)——乐高不倒翁、轮式是挖掘机、大颗粒皮筋车...
- pip安装 tensorflow-gpu 提示Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问
- 机器视觉:mvs相机调试
- 【视频课】一课彻底掌握深度学习图像分类各种问题,学习CV你值得拥有
- “有三AI百人”专栏作者培养计划启动,爱写作的你还等什么呢?
- 使用Python操作注册表
- 计算机网络那些事~(一)
- 前众信旅游B端产品经理吴彪:如何搭建B端电商产品及用户体系