2018.3.7java 学习第二天
java 学习的第二天,首先我们要学习的是声明变量,在程序中,我们必须先声明变量,然后才可以去使用之,那么变量究竟是什么呢?
在很多课本上,有很多的定义诸如:“变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。”以上是百度百科对于变量的定义,实际上这样的解释在很大程度上让读者根本看不懂,所以在这里,我想用浅显的人类语言给解释一下,如果不太准确,欢迎来喷。变量故名思议就是可以变化的量,与之相对应的自然是常量,那就是不变的量,我们在数学中学过诸多的方程式,比如 x+1=y,x 可以是1,可以是2,可以是3,也可以是任意数,当 x 为1的时候,y 为2,当 x 为2的时候,y 为3,那么 x 和 y 就是变量,是可以变的量,而方程式中的那个1就是常量,因为它是不变的,那么程序中的变量是什么呢,程序中的变量也是一个可以变化的量,它现在可以为1,伴随着程序的执行,它可能就变为2了,看到这里,初学者可能还是不太明白,我再举个例子,你可以把变量理解为一个盒子,在这个盒子中,可以放一个值,可以为1,也可以为2,随时是可以改变的,如果还是云里雾里,那也没关系,继续看下去,看完本文你就明白了。
在java 中,如果你要用到一个变量,那么你必须先声明之,要声明一个变量,那你必须先了解 java 的数据类型,不同数据类型的声明用到的关键词是不一样的,关于数据类型,请看下图,
1)如果你要声明的是一个整数,你可以用 byte,short,int,或者 long,其区别如下:
四种整数类型(byte、short、int、long): byte:8 位,用于表示最小数据单位,如文件中数据,-128~127 short:16 位,很少用,-32768 ~ 32767 int:32 位、最常用,-2^31-1~2^31 (21 亿) long:64 位、次常用 注意事项: int i=5; // 5 叫直接量(或字面量),即 直接写出的常数。 整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。 小于 32 位数的变量,都按 int 结果计算。 强转符比数学运算符优先级高。
比如 int age=25;
2)如果你要声明一个小数,那么你可以用 float 或者 double,两种浮点数类型(float、double): float:32 位,后缀 F 或 f,1 位符号位,8 位指数,23 位有效尾数。 double:64 位,最常用,后缀 D 或 d,1 位符号位,11 位指数,52 位有效尾 注意事项: 二 进 制 浮 点 数 : 1010100010=101010001.0*2=10101000.10*2^10(2次方)=1010100.010*2^11(3次方)= . 1010100010*2^1010(10次方) 尾数: . 1010100010 指数:1010 基数:2 浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X float 的精度没有 long 高,有效位数(尾数)短。 float 的范围大于 long 指数可以很大。 浮点数是不精确的,不能对浮点数进行精确比较。
比如:double shenGao=1.77;
3)如果你要声明的变量是用来存放一个字符,那么你就要用 char,一种字符类型(char): char:16 位,是整数类型,用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符,0~2^16-1(65535) 。 注意事项: 不能为 0个字符。 转义字符:\n 换行 \r 回车 \t Tab 字符 \" 双引号 \\ 表示一个\ 两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
比如 char ziMu=‘a’;
4)如果声明的变量只有是或非,那么就要用到布尔类型了 boolean:true 真 和 false 假。比如 boolean a=true;
5)如果你要声明的变量是用来存储字符串,要用到 String。比如 String a=“你好,世界!”;这里要注意 String 的 “S”是大写的;
上面说了这么多,那么问题来了,我们为什么要用到这么多声明方式呢?这就又回到了我们最初对于变量的定义:
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
到这里,各位应该对于 java 的变量有一定的了解了吧,那么接下来我们讲一下对于变量名称的命名规范。像之前的 int i=5;int age=25;double shenGao=1.77;这一些例子中,i、age、shenGao 这些变量,名字是不是随便起的呢?其实不是的,命名也是有规范的:
1.变量名的首字母只可以是字母(a-z,A-Z)、下划线_、美元符$这三个;
2.变量名的其他位置可以为字母(a-z,A-Z)、下划线_、美元符$或者数字;
3.变量名不可以重复,之前声明了变量 a,那么之后不可再次声明变量 a;
4.严格区分大小写,比如变量 age 与变量 Age 是两个不同的变量;
5.变量必须有初始值;
6.变量名臣不可以使用 java 关键字,比如你不可以声明 int int=1;你不能给一个变量起名为 int,当然也不可以给变量起名为 String 或者 double 等,详情请参阅下表,表中的单词均不可以作为变量名,因为它们在 java 中都具有各自的作用;
7.强烈建议起名用英文,而且是与你要写的变量相关,如果你要声明的变量是年龄,那么你可以声明 age,如果声明的变量是 String 字符串用户名字,那么变量名可以为 userName,这样可以增加代码的可读性,有助于养成良好的代码习惯。
2018.3.7java 学习第二天的更多相关文章
- 前端学习 第二弹: JavaScript中的一些函数与对象(1)
前端学习 第二弹: JavaScript中的一些函数与对象(1) 1.apply与call函数 每个函数都包含两个非继承而来的方法:apply()和call(). 他们的用途相同,都是在特定的作用域中 ...
- 二、Android学习第二天——初识Activity(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 一. Android学习第二天——初识Activity 昨天程序搭建成功以 ...
- python学习第二讲,pythonIDE介绍以及配置使用
目录 python学习第二讲,pythonIDE介绍以及配置使用 一丶集成开发环境IDE简介,以及配置 1.简介 2.PyCharm 介绍 3.pycharm 的安装 二丶IDE 开发Python,以 ...
- python学习第二次笔记
python学习第二次记录 1.格式化输出 name = input('请输入姓名') age = input('请输入年龄') height = input('请输入身高') msg = " ...
- 【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第二周测验【中英】
[中英][吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第二周测验 第2周测验 - 神经网络基础 神经元节点计算什么? [ ]神经元节点先计算激活函数,再计算线性函数(z = Wx + ...
- Learning ROS for Robotics Programming - Second Edition(《ROS机器人编程学习-第二版》)
Learning ROS for Robotics Programming - Second Edition <ROS机器人编程学习-第二版> ----Your one-stop guid ...
- 201671010140. 2016-2017-2 《Java程序设计》java学习第二周
学习第二周(Java基本程序设计结构) 这一周,着重学习了Java的简单程序设计实现及运行,通过自己操作,发现Java的程序语法大面 ...
- oracle学习 第二章 限制性查询和数据的排序 ——03
这里.我们接着上一小节2.6留下的问题:假设要查询的字符串中含有"_"或"%".又该如何处理呢? 開始今天的学习. 2.7 怎样使用转义(escape)操作符 ...
- Python学习-第二天-字符串和常用数据结构
Python学习-第二天-字符串和常用数据结构 字符串的基本操作 def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1 ...
随机推荐
- redis之管道
Redis 的消息交互当我们使用客户端对 Redis 进行一次操作时,如下图所示,客户端将请求传送给服务器,服务器处理完毕后,再将响应回复给客户端.这要花费一个网络数据包来回的时间. 如果连续执行多条 ...
- SpringCloud学习--微服务架构
目录 微服务架构快速指南 SOA Dubbo Spring Cloud Dubbo与SpringCloud对比 微服务(Microservice)架构快速指南 什么是软件架构? 软件架构是一个包含各种 ...
- 用Java JMC控制台分析线程阻塞原因
问题 今天在玩dianping-CAT框架时,发现请求某个页面的时候,发生了阻塞.浏览器得不到响应. 环境 本地Tomcat 8 , Windows 系统. 解决 启动jmc 控制台,找到BLOCKE ...
- Java多线程编程(五)定时器Timer
一.定时器Timer的使用 在JDK库中Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务.Timer类的主要作用就是设置计划任务,但封装任务的类确实TimerTask类,执行计 ...
- 关于typedef和struct
在struct中使用自身,需要加struct关键字,无论带不带typedef,例如: struct A { int a; struct A *pA; }; 在定义struct方面尽量不要使用typed ...
- .NET如何写正确的“抽奖”——打乱数组算法
.NET如何写正确的"抽奖"--数组乱序算法 数组乱序算法常用于抽奖等生成临时数据操作.就拿年会抽奖来说,如果你的算法有任何瑕疵,造成了任何不公平,在年会现场code review ...
- Dockerfile 定制镜像
从上一篇文章中我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置.文件等信息,但是命令毕竟只是命令,每次定制都得去重复执行这个命令,而且还不够直观,如果我们可以把每一层修改.安装.构建.操作的 ...
- Mycat分布式数据库架构解决方案--配置defaultAccount属性报错解决方案
echo编辑整理,欢迎转载,转载请声明文章来源.欢迎添加echo微信(微信号:t2421499075)交流学习. 百战不败,依不自称常胜,百败不颓,依能奋力前行.--这才是真正的堪称强大!!! 该文章 ...
- 深入理解.NET Core的基元(二) - 共享框架
原文:Deep-dive into .NET Core primitives, part 2: the shared framework 作者:Nate McMaster 译文:深入理解.NET Co ...
- 新的服务器安装的mysql使用navcat连接不上
首先出现问题 然后在防火墙添加3306端口 /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT 又出现了问题 ERROR 1130: Host ...