java语法基础
Java语法基础
keywords:Java语法
;<jdk1.8
;JavaSE
;
上下文
1.Java简介
Java 语言是 SUN 公司(Stanford University Network,斯坦福大学网络公司)1995 年推出 的一门高级编程语言。目前被Oracle公司收购。
java的初代贡献者詹姆斯·高斯林
Java 语言的三种技术架构:
- J2EE(Java 2 Platform Enterprise Edition) 企业版
- J2SE(Java 2 Platform Standard Edition) 标准版
- J2ME(Java 2 Platform Micro Edition) 小型版
Java5.0 版本后,三种技术架构分别更名为 JAVAEE、JAVASE、JAVAME
JAVAEE、JAVASE、JAVAME之间的关系:
Java的特点:解释型、面向对象的语言,支持跨平台
Java运行环境:JDK>JRE>JVM
- JRE(Java Runtime Environment Java 运行环境),包括 Java 虚拟机(JVM Java Virtual Machine)和 Java 程序所需的核心类库等。
- JDK(Java Development Kit Java 开发工具包),包含了 java 的开发工具:编译工具(javac.exe) 打包工具(jar.exe)等,和JRE。
2.在命令行运行Java程序
- 编写源文件:编写Java源文件,它的扩展名为.java;
- 编译:通过编译器(javac.exe)把源文件编译成字节码文件,扩展名为.class;
编译命令:xxx\jdk1.7.0_72\bin\javac.exe xxx.java
编译之后会在源文件同目录下生成字节码文件 - 运行:最后使用解释器(java.exe)来运行字节码文件。
运行命令:xxx\jdk1.7.0_72\bin\java.exe xxx(不用加后缀名)
注:将xxx\jdk1.7.0_72\bin\配置到PATH中可简化编译路径的书写,
3.带包的类编译和运行:
- javac 编译带上-d 即可, 如:
javac -d 包名.HelloWord.java
- 通过 java 命令执行, 如:
java 包名.HelloWord
4.反编译
- 找到Java文件生成的class文件目录,按住shift,右击鼠标,选中在此处打开命口;
- 输入
javap xxx.class
回车即可;
推荐文章:
Java发展简史
Java面向过程语法
前述:该部分主要介绍Java面向过程语法,如果你曾经学过C语言或其他高级编程语言,那么花几分钟扫一眼你就学完了java最基础的部分语法,如果你没学过,那推荐你去学一学C语言;
1.Java书写规范
- 标识符命名规则:以字母、$或_开头,后加字母、数字或_,区分大小写
- 变量和方法名称:小驼峰法则
- 类名或接口:大驼峰法则
- 常量名:大写单词+下划线分隔
- 语句以分号结束
- 包名:全部小写字母,网站反写+功能,例如:com.baidu.first
- 注释:
- 单行注释//
- 多行注释/**/
- 文档注释/***/ 文档注释可以使用javadoc.exe命令生成API文档
2.数据类型
基本数据类型:
- long型常量后加l或L声明,float型常量后加F或f声明
- 浮点型常量指数形式:
[±][0x]尾数E|P±指数[f|d](p表示2)
说明:加减号表示正负;十进制尾数只能用E- 布尔型常量:true、false
- 变量作用域:在一级大括号中
- 类型转换:
- 自动:byte -> short -> int -> long -> float -> double
- 强制:目标类型 变量名=(目标类型)(被转换的数据);
- boolean 类型不能转换为其他的数据类型
引用数据类型非常多,大致包括:类、接口类型、 数组类型、 枚举类型、 注解类型、字符串;
3.运算符与表达式
说明:
- 加法’+’可以完成字符串拼接
- 除法“/”当两边为整数时,取整数部分
- 小数取余没有意义
- 非boolean型变量不能进行逻辑运算
- 只有赋值运算符会改变变量自身的值
- 右移位时符号位拓展,移位数为0-31(int)或0-63(long),且只能对整数操作
三元运算符:(条件表达式)?表达式1:表达式2;
4.顺序结构(基本输入输出语句)
控制台输入:
- 导入包:
import java.util.Scanner;
- 实例化对象:
Scanner sc = new Scanner(System.in);
- 接受用户输入:
- 接收整数:
sc.nextInt();
- 接收字符串:
str = sc.next();
- 接收浮点值:
val = sc.nextDouble();
在 Scanner 类中,hasNextXxxx()方法可以判断是否能够获取一个 Xxxx的值
控制台输出:
System.out.println(str)
5.分支结构
1)if语句:
- 语法1:
if(条件)
- 语法2:
if(条件)...else
- 语法3:
if(条件)...else if(条件)...else
2)Switch语句:
switch(表达式){
case x:语句体x;break;
...
[default:语句体n+1;break]
}
3)三元表达式:
判断条件 ? 表达式1 : 表达式2
注意:
- if的条件必须是boolean型
- switch语句后"表达式"可以使用的值:byte,short,int,char,枚举(≥JDK5),String(≥JDK7)
6.循环结构
1)while语句:
while(条件){...}
2)dowhile语句:
do{...}while(条件);
3)for语句:
for([初始化表达式];[条件表达式];[操作表达式]){...}
- break关键字:可以跳出循环和switch选择语句
- countine关键字:可跳过一次循环
- 可以通过标号定位循环:
标号:循环
break/countine 标号;//跳出的位置
7.方法
格式:
[修饰符] 返回值类型 方法名([参数类型 参数名...]) {
方法体语句;
{局部代码块}
return 返回值;
}
说明:
- main方法:
public static void main(String[] args){...}
- 修饰符:final public protected private static
- 方法遇到return结束执行
参数传递:
- 传入基本数据类型(包含String类型),形式参数的改变对实际参数不影响
- 传入引用数据类型(String类型除外),形式参数的改变对实际参数有影响
重载方法:同名方法,自动识别调用,与返回值类型无关,与变量类型和个数有关,与变量名无关,和函数修饰符无关
可变长参数:类型...参数名
- 看作一个名为参数名的数组,放在所有参数最后面;
- 重载时优先调用无变长参数的方法
局部代码块:产生块级作用域,缩短变量生命周期
8.数组
一维数组的定义与赋值:
- 方式一:
int[] arry1=new int[5]; arry1[0]=0;
- 方式二:
String[] arry2= {"helloworld",...};
- 方式三:
char[] arry3=new char[]{'a',...};
说明:
- 求数组长度:
数组名.length;
- main()可以从命令行接收一个String数组,可通过args访问
二维数组的定义与赋值:存储可能不连续
- 方式一:
int[][] arr = new int[3][4];arr[1][2]=0;
- 方式二:
int[][] arr = new int[3][];a[0]=new int[3];a[1]=new int[4];
- 方式三:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
说明:
- 通过
a.length
求出行的大小,a[i].length
求出列(可以不同)- foreach遍历:
for(类型 变量:数组名)jdk>1.5
- 遍历时不能修改数组的长度
数组常见异常:
- 数组越界异常:
ArrayIndexOutOfBoundsException
- 空指针异常:
NullPointerException
9.jvm内存分配方式
- 内存结构:栈、堆、方法区、本地方法区、寄存器。
- 栈内存:暂时存储。用于存储局部变量,当数据使用完,所占空间会自动释放。
- 堆内存:存储类成员变量、数组和对象,通过new建立的实例都存放在堆内存中,任何的"引用数据类型"的"值"都存在堆里。
- 方法区:静态存储区、构造函数、常量池、线程池,方法字节码(生命周期长)
- 本地方法区:window系统占用 ,被定义为 native的方法。
- 寄存器:存储正要准备交给CPU处理的字节码
拾遗
1.负数取模运算
负数对正数取模结果为负数。正数对负数取模结果 为正数。举个栗子: -2%5= -2,其中-2是被模数,5是模数。
2.“&”和“&&”的区别
单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
参考文献:
[2]菜鸟-Java 教程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~