【Java基础语法】
2021/12/31 14:08:30
本文主要是介绍【Java基础语法】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JAVA基础语法
目录
- JAVA基础语法
- 1.JAVA概念
- 1.1JAVA和C的区别
- 1.2JAVA的跨平台性
- 1.3JDK和JRE
- 配1.4置环境变量
- 2.关于IDEA
- 3.标识符
- 3.1约定俗成的命名规则
- 3.1.1包的命名
- 3.1.2类和接口的命名
- 3.1.3变量和方法的命名
- 3.1.4常量的命名
- 4.注释
- 5.常量
- 5.1 进制
- 6.变量
- 6.1.数据类型
- 6.2.注意事项
- 7.运算符
- 7.1 算数运算符
- 7.2 赋值运算符
- 7.3 关系运算符
- 7.4 逻辑运算符
- 7.5 位运算符
- 8.流程控制
- 8.1 顺序结构
- 8.2 选择结构
- 8.3 循环结构
- 9.大数
- 10.数组
- 10.1 声明数组
- 10.2 访问数组元素
- 10.3 for each循环
- 10.4 数组拷贝
- 10.5 命令行参数
- 10.6 多维数组
- 11.方法
- 11.1 概念
- 11.2 方法重载
- 10.3 注意事项
1.JAVA概念
1.1JAVA和C的区别
- 跨平台
- 面向对象
- 健壮 安全性(无需自己生成内存、无指针)
- 分布式 高效(初始JAVA未经优化)
- 多线程 结构中立(独立于操作系统)
- open sourse
1.2JAVA的跨平台性
- JAVA运行在虚拟机上,而不是运行在物理机,因此可移植性强。代价就是JVM是不跨平台的。
1.3JDK和JRE
- JRE(Java Runtime Environment)
- JDK
配1.4置环境变量
- path环境变量,相对路径写法,新建一个目录路径的定义,告诉操作系统javac可执行程序的位置
- classpath,告诉JVM加载字节码文件的位置
2.关于IDEA
- Project是工程的工作空间,Module是具体的一个个工程。
- JAVA源代码必须放在JAVA源目录中(source root)
- git更新,更新module
3.标识符
注意,不能是数字开头
3.1约定俗成的命名规则
3.1.1包的命名
- 单级包全部小写
- 多级包域名反转(保证了包名的唯一性)是虚拟的域名反转
例: com.cskaoyan.name
3.1.2类和接口的命名
- 一个单词 首字母大写,其他字母小写
- 多个单词 大驼峰式
3.1.3变量和方法的命名
- 一个单词 全部小写
- 多个单词 小驼峰式
3.1.4常量的命名
- 一个单词 全部大写
- 多个单词 全部大写,单词间下划线分隔
4.注释
- 单行 //
- 多行 /* */
- 文档 /** */
5.常量
5.1 进制
- 二进制 0b11
- 八进制 0b11
- 十进制 11
- 十六进制 0x11
6.变量
变量就是一片小的存储空间
6.1.数据类型
一定范围内的数据集合,和对数据集合的合法操作
- 基本数据类型
- 整数型 byte,short,int(默认),long
- 小数型 float,double(默认)
- 字符型
- 布尔型
- 引用数据类型
6.2.注意事项
-
作用域
变量有一定的生命周期,只在它所在的作用域中才有意义,作用域即变量所在的{}- 一旦超出了变量定义的作用域,就访问不到了
- 在包含关系的作用域中不能出现重名的情况
-
初始值
变量在使用之前,必须赋初始值 -
数据类型转化
- 隐式类型转化
- 不同数据类型运算时,JVM会先将数据转化成同一类型,具体是把范围小的数据类型转换成范围大的
- boolean类型不能直接转化为其他类型
- byte,short,char类型之间不会直接转化,而是以int类型的身份进行计算
- 强制类型转化
格式:目标类型 变量名=(目标类型)被转换的数据
数据精度可能会丢失
因此,声明float类型时,需要在数值后面加上f
float f = 0.5F; long l = 99999999999L;//最好不要用小写l byte b = 1 + 2;//编译器进行了优化,因为是直接的常量计算,编译器会预先计算好结果,并检查是否在相应的数据类型所能取值的范围内t
7.运算符
7.1 算数运算符
- +
- 数值加法
- 正号
- 字符串拼接
- - * /
- %
- ++ --(以++为例说明)
建议不要在表达式中使用自加自减,容易出现bug- 单独运算时,++的位置在何处都不会有影响
- 参与其他运算
- c++ 先参与运算再自增
- ++c 先自增再参与运算
7.2 赋值运算符
- += 复合运算包含强制类型转换
7.3 关系运算符
结果是布尔类型,是或否
==, !=, <, >, <=, >=7.4 逻辑运算符
&, |, !, ^(异或), &&, ||, ?:
&与&&,|与||的差别:&和|不太聪明,必须要执行完两侧运算才能进行逻辑运算,而&&不需要,比如第一个为false的话,另一个就不运算了
7.5 位运算符
- 移位 移位移的补码
- 左移
空位补零,高位丢弃 - 右移
- 带符号右移 >> 相当于除以二
- 无符号右移 >>> 只有正数才是除以二
- 左移
- 与,或,异或
- ~:所有位取反
变量交换的方式
1.定义中间变量
2.计算技巧int a,b; a = a + b; b = a - b; a = a - b;
3.异或运算
int a,b; a = a ^ b; b = a ^ b; a = a ^ b;
4.神头鬼脸
int a,b; a = (a + b) - (b = a);
- 隐式类型转化
8.流程控制
作用域
变量有一定的生命周期,只在它所在的作用域中才有意义,作用域即变量所在的{},一旦超出了变量定义的作用域,就访问不到了。在包含关系的作用域中不能出现重名的情况
8.1 顺序结构
8.2 选择结构
- if
- if else
- if else if else
- switch
switch(choice){ case 1: ...; break; case 2: ...; break; default://other value ...; break; }
删除break语句在语法上没有错误,但是在当前case分支中的语句执行完后,而是继续执行相邻case分支中的语句
当然,并不是说这样不好,相反,有时候我们利用这种结构会减少所需要使用的代码量
case的标签可以是:
类型为char,byte,short,int的常量表达式
枚举常量
字符串字面量(Java7开始)
8.3 循环结构
循环控制变量贯穿始终
循环结构的四种基本语句
- 初始化语句
- 条件判断语句
- 循环体语句
- 循环控制语句
-
while
先检测循环的条件 -
do statement while(condition)
先执行语句再检测循环条件 -
for
不成文的规矩:对同一个变量进行初始化、检测和更新
建议不要使用浮点数判断相等条件,因为浮点数是近似值,有可能永远不满足条件 -
带标签的break
和C++的goto类似,只能跳出语句块,而不能跳进语句块。当然,不建议使用。
read_data: ... while(condition){ ...; if(condition2) break read_data; }
-
continue
跳过本轮循环,进入到下一轮循环 -
return
方法的结束语句,具体内容在方法中展开
9.大数
如果基本的整数和浮点数不能满足需求,java.math中有两个很有用的类:BigInteger(任意精度整型运算)和BigDecimal(任意精度浮点数运算)。
如果需要进行算术运算,需要调用大数对象的方法。
具体的方法可以去Oracle官方网站查找API文档
BigInteger c = a.add(b);//c=a+b BigInteger d = c.multiply(b.add(BigInteger.valueOf(2)));//d=c*(b+2)
10.数组
10.1 声明数组
int[] a = new int[100];//声明并初始化一个容量大小为100个整型变量的数组 int[] a = {2,3,4}; smallPrimes = new int[] {2,3,4}; //等价于 int anonymous = {2,3,4}; smallPrimes = anonymous;
Java中允许有长度为0的数组,但是和null并不等价
new elementType[0]; 或者 new elementTypr[] {};
10.2 访问数组元素
根据数组下表访问数组,和C++一样
10.3 for each循环
for(variable : collection) statement;
variable变量用于暂存数组collection中的变量值
10.4 数组拷贝
Arrays的copyOf方法
10.5 命令行参数
public static void main(String[] args)
表明main方法将接收一个字符串数组,也就是命令行指定的参数,和C++不同,程序名没有存储在args数组中,命令行参数的第一个字符串即为args[0]。
10.6 多维数组
double[][] balances;//声明 balances = new double[NYEARS][NRATES];初始化 int [][] magicSquare = { {1,2}, {3,4}, {5,6} };
for each循环不能自动处理二维数组中的每一个变量,需要使用两次:第一次是访问每一个数组,第二次是访问第一次访问数组中的每一个数组元素
Arrays.deepToString(a)
可输出二维数组的数据元素列表
Java实际上没有二维数组,因此可以根据自己需要,使用不规则数组
11.方法
11.1 概念
- 有返回值的方法
形式参数和实际参数
实际参数的值复制给形式参数,在方法体内参与运算后将结果返回到方法的返回值 - 无返回值的方法
11.2 方法重载
一个类定义多个同名方法是没有问题的,方法重载需要遵守一定的规则:
- 参数个数不同
- 参数类型不同
- 参数顺序不同(是参数类型的顺序)
Java区分方法的原理:
方法签名:方法名+参数列表 不会考虑方法返回值
方法重载便利了方法的调用,但不能忽视方法的定义
10.3 注意事项
- 方法需要调用才能使用
- 方法不能嵌套定义
- 参数用逗号隔开
- 注意返回值
这篇关于【Java基础语法】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26消息中间件源码剖析教程
- 2024-11-26JAVA语音识别项目资料的收集与应用
- 2024-11-26Java语音识别项目资料:入门级教程与实战指南
- 2024-11-26SpringAI:Java 开发的智能新利器
- 2024-11-26Java云原生资料:新手入门教程与实战指南
- 2024-11-26JAVA云原生资料入门教程
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程