用于存储可变数据的容器。
数据类型 变量名 = 值
常量是指在程序运行过程中其值不能改变的量。
Java中常量的分类:
整数常量 : 所有整数
小数常量 : 所有小数
布尔常量 : 只有true和false
字符常量 :使用’’引起来的单个字符
字符串常量 :使用“”引起来的字符序列,“” 、“a” 、” ”
null常量 : 只有一个值null
就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Demo,就是我们定义的类名。类名就属于标识符的一种。
标识符除了应用在类名上,还可以用在变量、函数名、包名上。
多个单词组成时所有字母小写(例:package com.itcast)
多个单词组成时所有单词的首字母大写(例:HelloWorld)
多个单词组成时第一个单词首字母小写,其他单词首字母大写(例:lastAccessTime、getTime)。
多个单词组成时,字母全部大写,多个单词之间使用_分隔(例:INTEGER_CACHE)
注意:只是为了增加规范性、可读性而做的一种约定,标识符在定义的时候最 好见名知意,提高代码阅读性。
通过注释提高程序的可读性,是java程序的条理更加清晰,易于区分代码行与注释行。另外通常在程序开头加入作者,时间,版本,要实现的功能等内容注释,方便后来的维护以及程序员的交流。
单行注释(line comment)
用//表示,编译器看到//会忽略该行//后的所文本
多行注释(block comment)
用/**/表示,编译器看到/*时会搜索接下来的*/,忽略掉/**/之间的文本。
文档注释
用/** */表示,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
文档注释 (编写软件说明书)
如何生成软件说明书:
| 同时按win+R,在弹出框中输入cmd,按回车,进入Dos命令窗口 输入java –version查看是否安装了JDK,如果出现如图信息,说明已安装,未出现则说明未安装,需要先安装JDKJDK 具体安装过程见:https://cloud.tencent.com/developer/article/1447690 如果JDK已安装,先找到你所要生成软件说明书的java源文件路径如图,找到源文件路径后,在DOS命令窗口中将路径切换为Java源文件路径 如图,找到源文件路径后,在DOS命令窗口中将路径切换为Java源文件路径 切换DOS命令窗口中的路径后,输入javac –d . Hello.java(源文件),编译源文件,看源文件是否有错误,如果没任何错误,输入javacdoc Hello.java(源文件)生成软件说明书 如上图 生成软件说明书后找到 源文件名.html文件并打开, 如图 你看到的文档即为软件说明书 |
|:----|
具体安装过程见:https://cloud.tencent.com/developer/article/1447690
如图,找到源文件路径后,在DOS命令窗口中将路径切换为Java源文件路径
如上图
如图
javadoc 工具软件识别以下标签:
@author 作者
@version 版本
@param 方法的参数
@return 返回值
注释的使用细节:
三种注释可以出现在程序的任何地方,但是不推荐找任意位置。
1. 给哪条语句进行说明,注释应该写在该语句的旁边。
注意:文档注释只能出现在类、属性、方法的上面。
计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。我们可以把运算符分成以下几组:
算术运算符
关系运算符
运算符 | 运算 | 例子 | 结果 |
---|---|---|---|
== | 相等于 | 4= =3 | false |
!= | 不等于 | 4!= 3 | true |
< | 小于 | 4 < 3 | flase |
大于 | 4>3 | true | |
<= | 小于等于 | 4<=3 | false |
| 大于等于 | 4>=3 | true |
Instanceof | 检查是否是类的对象 | "hello"instanceof String | true |
位运算符
位运算符 | 运算符含义 |
---|---|
& | 与(AND) |
| | 或(OR) |
^ | 异或 |
~ | 取反 |
逻辑运算符
赋值运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | a=3,b=2 | a=3,b=2 |
+= | 加等于 | a=3,b=3;a+=b; | a=5,b=2; |
-= | 减等于 | a=3,b=2,a-=b; | a=1,b=2; |
*= | 乘等于 | a=3,b=2,a*=b; | a=6,b=2 |
/= | 除等于 | a=3,b=2,a/=b; | a=1,b=2; |
%= | 模等于 | a=3,b=2,a%=b; | a=1,b=2 |
其他运算符
三元运算符
格式
(条件表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
示例:
1获取两个数中大数。
int x=3,y=4,z;
z = (x>y)?x:y;//z变量存储的就是两个数的大数。
| int x = 1; int y = 2; int z; z = x > y ? x : y; System.out.println(z); //2 |
|:----|
2判断一个数是奇数还是偶数。
| int x=5; System.out.println((x%2==0?"偶数":"奇数")); |
|:----|
运算符的优先级与结合性
Java 基本数据类型
变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。
Java 的两大数据类型:
数据类型转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级:
| 低 ------------------------------------> 高 byte,short,char—> int —> long—> float —> double |
|:----|
数据类型转换必须满足如下规则:
自动类型转换(也叫隐式类型转换)
要实现自动类型的转换,需要满足两个条件:
第一两种类型彼此兼容
第二目标类型取值范围必须大于源类型。
所有的数字类型,包括整形和浮点型彼此都可以进行转换。
强制类型转换(也叫显式类型转换)
当两种类型彼此不兼容,或者目标类型取值范围小于源类型(目标是byte源是int)
无法自动转换,此时就需要进行强制类型转换。
强制类型转换需要注意:
损失精度!!!
类型转换的原理
可以把byte 理解为1两的碗,short 2两的碗,int 4两的碗,long 8两的碗。1两碗的满碗酒可以倒入 2两 4两 8两的碗中。但是 4两碗的酒倒入1两碗的酒就有一些问题。
什么时候要用强制类型转换
比如小数部分只想保留整数部分.
一定要清楚要转换的数据在转换后数据的范围内否则会损失精度.
| public static void main(String[] args) { byte b = 100; b = (byte) (b + 2); System.out.println(b); // 102 //舍弃小数部分 double d=5.5; int num=(int)d; } |
|:----|
表达式的数据类型自动提升
算术表达式,逻辑表达式
所有的byte型、short型和char的值将被提升到int型。
如果一个操作数是long型,计算结果就是long型;
如果一个操作数是float型,计算结果就是float型;
如果一个操作数是double型,计算结果就是double型。
自动类型提升
| byte b = 3; int x = 4; x = x + b;// b会自动提升为int 类型参与运算。 System.out.println(x);// 7 |
|:----|
强制类型转换
| byte b = 2; /* * 强制类型转换,强制将b+2强制转换为byte类型,再赋值给b */ b = (byte) (b + 2); System.out.println(b);// 4 |
|:----|
分析 System.out.println(‘a’+1)结果?
System.out.println(‘a’+1)结果
美国人为了让计算机识别他们生活中的文字,让二进制表示生活中的文字.所以一个字母代表了一个二进制.,二进制也有十进制的表现形式.,把生活中的字母都用数字来标识,例如97 代表a ,98 代表 b。打印’a’就把a作为输出显示,没有疑问。但是 ‘a’+1 有加号涉及到了运算。根据java自动类型提升规则,同样道理 char 提升为int 。就把’a’代表的数字体现了出来。a 表示的是97 97+1就是98; 那么 想要查看98 表示的char 是什么 怎么实现呢 ?就要用到刚才介绍的强制类型转换了 System.out.println(char(‘a’+1));就取到了98 在ASCII码表中表示的字符。大写A 和小写a 在 ASCII有不同的表现。还有一个概念字符’1’ 在ASCII中 不是数字 1,可以运行代码查看,到此就可以明白了char 类型,char类型也是可以参与运算的,为什么可以参与运算呢。因为字符在ASCII表中都有对应的数字体现。所有的计算机兼容ASCII。
System.out.println('a'+1); //98
System.out.println((char)('a'+1)); //b
补充问题:
| int i='a'+'b'; System.out.println(i);//结果? System.out.println("hello"+'j'); //结果? |
|:----|
总结:
所有数值运算符都可以用在char型数据上,如果另一个操作数是一个数字或者字符,那么char会自动提升为int型,如果另一个操作数是字符串,那么字符就会和字符串相连。
Java语言提供了很多修饰符,主要分为以下两类:
修饰符用来定义类、方法或者变量,通常放在语句的最前端。
(1)if-else-if语句
语法:
| if(条件){ //当条件为true时,执行大括号内的代码 }else if(条件){ } |
|:----|
(2)switch-case语句
概念:
switch 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
语法:
| switch( 变量 ){ case 值1: break; case 值2: break; default: } |
|:----|
当程序执行到break关键字时,跳出当前的switch语句;
(1)while循环
语法:
| while(条件){ //当条件为true时,执行循环体内的代码; } |
|:----|
备注:
满足循环的三个条件:初始化变量、关系运算、迭代
(2)do-while循环
语法:
| do{ }while(条件); |
|:----|
备注:与while循环的区别是,当条件为false时,也会被执行一次。
(3)for循环
语法:
| for(int i = 0 ; i < 10 ; i++){ } |
|:----|
说明:
(4)foreach循环
Java5 引入了一种主要用于数组的增强型 for 循环。
Java 增强 for 循环语法格式如下:
| for(声明语句 : 表达式) { //代码句子 } |
|:----|
声明语句:
声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:
表达式是要访问的数组名,或者是返回值为数组的方法。
语法:
概念:重载(overloading) 是在一个类里面,方法名字相同,而参数不同。与返回值类型、访问修饰符无关。
规则:
规则:
当在一个源文件中定义多个类,并且还有import语句和package语句时,要特别注意以下规则:
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。
包的作用:
包语句的语法格式为:
| package pkg1[.pkg2.pkg3…]; |
|:----|
例如,一个Something.java 文件它的内容
| package net.java.util; public class Something{ ... } |
|:----|
那么它的路径应该是 net/java/util/Something.java 这样保存的。
Package关键字:
在Java中,如果给出一个完整的限定名,包括包名、类名,那么Java编译器就可以很容易地定位到源代码或者类。Import语句就是用来提供一个合理的路径,使得编译器可以找到某个类。
例如,下面的命令行将会命令编译器载入java_installation/java/io路径下的所有类
| import java.io.*; |
|:----|