Java基础 变量和数据类型及相关操作
Java基本语法:
1):Java语言严格区分大小写,好比main和Main是完全不同的概念。
2):一个Java源文件里可以定义多个Java类,但其中最多只能有一个类被定义成public类。若源文件中包括了public类,源文件必须和该public类同名。
3):一个源文件中包含N个Java类时,成功编译后会生成N份字节码文件,即每个类都会生成一份单独的class文件,且字节码文件名和其对应的类名相同。
4):若一个类必须运行,则必须拥有main方法,因为main方法是程序的入口.
编程建议:
一个Java源文件只定义一个类,不同的类使用不同的源文件定义;
将每个源文件中单独定义的类都定义成public的;
保持Java源文件的主文件名与源文件中的类名一致;
注释类型
单行注释:// ; //注释信息,从//开始到本行结束的所有字符会被编译器忽略;
多行注释:/* */;/* 注释信息 */之间的所有字符会被编译器忽略
文档注释:/** */;/** 注释信息 */和多行注释一样,除此之外还可以专门生成文档信息API。
关键字:
在编程语言中有一些事先定义的,有着特殊含义和用途的单词。
保留字:
和关键字一样都是编程语言事先定义好的,只是说现在暂时没有特殊的用途,但说不定以后某天会突然被赋予意义和被使用到,因此被保留下来的单词,goto和const就是Java的保留字。
注意
关键字和保留字都是由小写组成
Java语言分隔符:
分号(;):语句的分割,表示一句话结束,好比咱们使用的句号。
花括号({}):表示一个代码块,是一个整体,花括号要成对使用。
方括号([]):定义数组和访问数组元素时使用。
圆括号(()):使用很广泛,具体用到细讲。
圆点(.):类和对象访问它的成员时使用。
空格( ):把一整条语句分割成几段,空格的次数不限制,好比一句英文里单词都要分开写一样。
注意:必须都是半角下的英文符号。;ab;ab
标识符:
在写代码的时候为了增强代码的阅读性会自定义很多名字,比如:类名,方法名,变量名等。 在编程的里我们把这种为了增强程序阅读性而自定义的名称,称为标识符。
标识符命名规则:
① 由字母、数字、下划线、$组成,但不能以数字开头(注:此处的字母可以是中文、日文等)。
② 大小写敏感。
③ 不得使用java中的关键字和保留字。
④ 不用Java中内置的类名作为自己的类名。
其实,大家也没必要记这么多,使用一个非关键字和保留字的有意义的英文单词就很OK了。 注意问题:类名首字符规范是大写的.
常量:
程序中固定不变化的值。
常量分类:
字面值常量: 比如:整数常量1,2,3,小数常量3.14,布尔常量false,true等。. 字面量,就表示直接给出的一个值(可以是整数,小数,true,false等等),
直接量. 定义的final变量:
变量
变量的定义:
表示存储空间,可用来存放某一类型的常量,没有固定值,并可以重复使用,也可以用来存储某种类型的未知数据。 好比饭店雅间的名字.
变量的特点:
① 占据着内存中的某一块存储区域;
② 该区域有自己的名称(变量名)和类型(数据类型);
③ 可以被重复使用;
④ 该区域的数据可以在同一类型范围内不断变化;
变量的定义:
a.先定义变量,再赋值:数据类型 变量名; 变量名 = 值
b.在声明时同时赋值: 数据类型 变量名 = 初始化值;
注:格式是固定的,记住格式,以不变应万变。
不推荐:同时定义多个变量.
变量的分类:
随着变量定义在类中的位置不同,故把变量分成两大类:
成员变量:直接定义在类里的变量,又称为全局变量或字段。
局部变量:变量除了成员变量之外,其他就是局部变量。根据定义的位置不同有3种表现形式:方法形参,方法内变量,代码块变量。
变量作用域:
指变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就确定了: 作用域是定义开始到定义所在的花括号结束;
变量使用规则:
1.变量必须先声明,并且初始化后才能使用;
2.声明变量必须有数据类型
3.同一作用域内变量名不能重复定义
表达式(expression):
是由数字、运算符、数字分组符号(括号)、常量、变量等以能求得结果的有意义排列的组合。 用运算符号连接的变量/常量可称为表达式。那么也就是说表达式是由常量、变量、运算符、括号组成能求得值的有意义结果的语句。
表达式中操作数进行运算得到的最终结果就是表达式的结果。。
表达式的运算顺序(大多和数学一样,参照后面的运算符操作优先级):
数据类型和分类
在Java中数据类型整体上分成两大类:
1):基本数据类型/原生数据类型,共8个:
1>:数值型: 整数类型:byte,short,int,long, 不同的整数类型在内存占用的内存空间大小是不一样的. 小数类型:float,double.
2>:字符型:char,什么是字符,字母/符号.
3>:布尔型:boolean,表示对与错.true,false.
2):引用数据类型/对象数据类型: 类/接口/数组
boolean类型:
通常用于逻辑运算和程序流程控制(条件选择/循环)。 该类型的值只能是true 或 false,表示真或假。 不可以使用0或非0的整数来代替false和true,区分于C语言。 (其实在JVM中对boolean的处理也是用0表示false,非0表示true的。)
false和true是boolean的常量。
整数类型(byte-short-int-long):
byte、short、int、long类型: 整型常量的四种表示形式:
① 二进制整数:0B或0b开头(Java7的新特性),如:int a = 0B110;
② 八进制整数:要求以0开头,如 int a = 012;
③ 十进制整数:如:int a = 17;
④ 十六进制整数:要求0X或0x开头,如int a = 0x12;
Java语言的整型常量默认是int型,声明long型变量后加上‘l’或‘L,因小写的l容易和数字1相混淆,建议使用大写L。 默认情况下,一个整型的字面量默认是int类型.
byte,short,int,long唯一的不同就是存储空间的容量大小不一样.根据具体需要存储的数据去选择合适的数据类型, 一般的,使用int即可.
小数类型(float-double):
float、double类型: 表示小数类型又称为浮点类型,其中float表示单精度类型,double表示双精度类型,但是二者都不能表示精确的小数。
Java的浮点类型常量有两种表现形式:
十进制形式: 例如:3.14 ,168.0, .618
科学计数法形式: 例如:3.14e2, 3.14E2, 1000E-2 科学计数法表达式返回的结果是double类型。 默认情况下,一个浮点类型的字面量默认是double类型.若要声明一个常量为float型,则需在常量后加上f 或 F,double常量后面的D或d可省略。
注意:Java里只有浮点型的变量才可以接受科学计算式结果: 因为float和double都不能精确的表示小数,那么在精度要求高的系统比如银行系统里,那怎么表示精确的小数呢?用BigDecimal类型,它表示任意精度的数据。
字符类型(char):
字符,字母和符号.
char类型:表示16位的无符号整数或者Unicode字符,Java对字符采用Unicode字符编码。 Unicode收集了世界上所有语言文字中的符号,是一种跨平台的编码方式,Java的字符占两个字节,可以表示一个汉字。
什么是编码?
计算机只能表示0和1两个数,于是人们做规定使用一个数字去表示一个特定的字符,比如a使用97表示。 char前256个字符和ASCII(美国信息交互标准编码)码中的字符重复。
char常量有3种表示形式:
① 直接使用单个字符来指定字符常量,格式如'◆'、'A','7';
② 直接作为十进制整数数值使用,但是数据范围在[0,65535],格式如97,但是打印出来的值依然是ASCII码表对于的符号,如97打印出来是字符a。
③ 和2一样,只不过表示的是16进制的数值,格式如'\uX',X表示16进制整数;如:97的16进制是61。那么表示为‘\u0061’打印出来也是a。 所以有人说char本质上也是整型,也是有道理的。 char前256个字符和ASCII(美国信息交互标准编码)码中的字符重复,可查表。
最常用的引用类型-String
除了8种基本数据类型,其他所有类型都是引用数据类型,包括类、接口、数组。引用数据类型默认初始值都是null。
String是一个类,表示字符串,所谓字符串,就是一串字符,也就是N个字符连接在一起(N可以表示0或多个),好比羊肉串。
字符串都得使用 "" 括起来的,连接字符串使用 “+”符号。
字符串拼接:字符串和任意数据类型相连接,结果都是字符串类型.
System.out.println(8 + 7 + "Hello");//结果是 15hello
System.out.println("Hello" + 7 + 8);//结果是 hello78
System.out.println(7 + "Hello" + 8);//结果是 7hello8
String str = 17 + "ABC";//组成一个新的字符串 17ABC
System.out.println(str);
String str2 = (String)17 + "ABC";//编译错误: 不可转换的类型
数据过大和溢出
当要表示的数据超出数据类型的临界范围时,称为溢出。
溢出情况发生时程序并没有做数据范围检查处理,此时会出现数据紊乱情况。 int最大值 int intMax = 2147483647;
基本数据类型转换
在8大基本数据类型中,boolean不属于数值类型,不参与转换
转换规则其实就是各自数据类型的空间大小.看图 把不同的数据类型看成是不同容量的容器.
byte是1个字节,最多只能装1斤水.
short是2个字节,最多只能装2斤水.
自动类型转换,也称为“隐式类型转换:
当把小数据范围类型的数值或变量赋给另一个大数据范围类型变量,系统可以完成自动类型转型。这好比把装一斤水容器里的水倒进可以装两斤水的容器里一样。
再次强调:boolean 类型是不可以转换为其他数据类型。
一般的,byte,short,char不参与转换操作. 我们直接把byte,short,char直接付给int类型.
强制类型转换,也称为“显示类型转换”:
当把大范围类型的数值或变量赋给另一个小范围类型变量时,此时系统不能自动完成转换,需要加上强制转换符,但这样的操作可能造成数据精度的降低或溢出,所以使用时要格外注意。 这就好比把装两斤水容器里的水倒在可以装一斤水的容器里,是可能造成水溢出的。 若要坚持把4斤苹果塞进一个装3斤的袋子里,我们要怎么办?动用暴力。
强制类型转换,可能造成溢出和精度损失
表达式类型的自动提升
当一个算术表达式中包含多个基本数据类型(boolean除外)的值时,整个算术表达式的数据类型将在数据运算时出现类型自动提升,
其规则是:
所有的byte、short、char类型被自动提升到int类型; 整个表达式的最终结果类型被提升到表达式中类型最高的类型;
double d1 = 123 + 1.1F + 99L + 3.14;
System.out.println('a' + 1);//
byte b = 22;
b = b + 11;//编译出错,此时结果类型应该是int
Java基础 变量和数据类型及相关操作的更多相关文章
- Java基础——变量、数据类型
一 .变量 1.计算机的内存类似于人的大脑,计算机使用内存来记忆大量运算时要使用数据.内存是一个物理设备,如何来存储一个数据呢?很简单,把内存想象成一间旅馆,要存储的数据就好比要住宿的客人. 首先,旅 ...
- JavaScript 基础 (变量声明, 数据类型, 控制语句)
创建: 2017/09/16 更新: 2017/09/24 更改标题 [JavaScript 概要]-> [JavaScript 基础] 完成: 2017/09/25 更新: 2017/10/0 ...
- Java基础-变量的定义以及作用域详解
Java基础-变量的定义以及作用域详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.字面量 常量(字面量)表示不能改变的数值(程序中直接出现的值).字面量有时也称为直接量,包 ...
- Java基础复习笔记系列 七 IO操作
Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...
- Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)
Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...
- Java 语言基础 (初识Java语言, 变量和数据类型, 运算符, 流程控制语句, 数组)
初始 Java 语言 Java SE -- Java Platform, Standard Edition 是 Java 平台的基础 Java SE 以前称为 J2SE, 可以编写桌面应用和基于 we ...
- Python基础语法,基本数据类型及相关操作
---恢复内容开始--- python文件 文件开头要有 #!/usr/bin/ python --在linux中是告诉系统phthon的路径是在/usr/bin/ python目录下 ...
- JAVA基础——变量和常量
JAVA的变量和常量知识总结 一.认识java标识符 标识符就是用于给 Java 程序中变量.类.方法等命名的符号. 使用标识符时,需要遵守几条规则: 1. 标识符可以由字母.数字.下划线(_).美 ...
- Java 基础 变量和运算符
Java基础语法 第1章 变量 1.1 变量概述 1.2 计算机存储单元 1.3 基本类型之4类8种 1.4 常量与类型 1.5 定义变量(创建变量) 1.6 变量使用的注意事项 1.7 数据类型 ...
随机推荐
- 面试:谈谈你对Spring框架的理解
Spring是一个优秀的轻量级框架,大大的提高了项目的开发管理与维护.Spring有两个核心模块.一个是IOC,一个是AOP. IOC: 就是控制反转的意思,指的是我们将对象的控制权从应用代码本身转移 ...
- CentOS scp远程拷贝
scp(secure copy)是一个基于 SSH 协议在网络之间进行安全传输的命令, 其格式为“scp [参数] 本地文件 远程帐户@远程 IP 地址:远程目录”. 1.主要参数 -v 显示详细的连 ...
- 源码安装和yum安装的区别。
yum是将yum源中别人已经编译好的rpm包下载到本地,然后安装,不需要考虑依赖,主要是方便.源码安装没法人为的控制,安装的版本也很低. 源码安装需要自己编译,安装,编译过程中可以设置参数.可安装的版 ...
- usaco中遇到的问题
numbers are integers with unique digits 意思是数字中的每一个数字都是不一样的& 让一个图成为强连通图只需添加max(出度为0,入度为0)的点,然后如果图 ...
- [JSOI2007]重要的城市 floyd:最短路计数
---题面--- 题解: 其实感觉还是比较妙的,第一眼看题想到floyd统计最短路条数, 注意到对于任意两点x,y而言,floyd将会枚举其最短路所可能经过的所有中转点, 因此我们可以直接分别统计对于 ...
- MHA选择主库源码解析
知数堂第5期MySQL实战班学员,第10期MySQL优化班学员,现任职助教. MHA在选择新的主库之前,会先把活着的slave分为几个数组,分别为latest(最靠前的slave数组),pref(优先 ...
- 20165218 实验一 Java开发环境的熟悉
实验一 Java开发环境的熟悉 课程:java程序设计 姓名:赵冰雨 学号:20165218 指导教师:娄嘉鹏 实验日期:2018.4.2 实验密级:Java开发环境的熟悉 实验内容.步骤与体会: ( ...
- 去掉vue 中的代码规范检测(Eslint验证)
去掉vue 中的代码规范检测(Eslint验证): 1.在搭建vue脚手架时提示是否启用eslint检测的. Use ESLint to lint your code? 写 no; 2.如果项目已经生 ...
- 【贪心/DP/单调队列】【CF1029B】Creating the Contest
Description 给你一个单调不下降的长度为n的序列,请你找出一个最长的子序列,满足找出的子序列中,\(A_i<=A_{i-1}~\times~2\),其中i为下标,A为找出的子序列.对于 ...
- JavaScript如何获得input元素value的值
在JavaScript中获取input元素value的值: 方法一: <!DOCTYPE html> <html> <head> <meta charset= ...