java语法基础

Java语法基础

keywords:Java语法;<jdk1.8;JavaSE;

上下文

1.Java简介

Java 语言是 SUN 公司(Stanford University Network,斯坦福大学网络公司)1995 年推出 的一门高级编程语言。目前被Oracle公司收购。

java的初代贡献者詹姆斯·高斯林
img

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之间的关系:
img

Java的特点:解释型、面向对象的语言,支持跨平台
img

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程序

img

  • 编写源文件:编写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发展简史

JDK下载安装与环境变量配置图文教程

Java面向过程语法

前述:该部分主要介绍Java面向过程语法,如果你曾经学过C语言或其他高级编程语言,那么花几分钟扫一眼你就学完了java最基础的部分语法,如果你没学过,那推荐你去学一学C语言;

1.Java书写规范

  • 标识符命名规则:以字母、$或_开头,后加字母、数字或_,区分大小写
  • 变量和方法名称:小驼峰法则
  • 类名或接口:大驼峰法则
  • 常量名:大写单词+下划线分隔
  • 语句以分号结束
  • 包名:全部小写字母,网站反写+功能,例如:com.baidu.first
  • 注释:
    • 单行注释//
    • 多行注释/**/
    • 文档注释/***/ 文档注释可以使用javadoc.exe命令生成API文档

2.数据类型
img

基本数据类型:
img

  • long型常量后加l或L声明,float型常量后加F或f声明
  • 浮点型常量指数形式:[±][0x]尾数E|P±指数[f|d](p表示2)
    说明:加减号表示正负;十进制尾数只能用E
  • 布尔型常量:true、false
  • 变量作用域:在一级大括号中
  • 类型转换:
    • 自动:byte -> short -> int -> long -> float -> double
    • 强制:目标类型 变量名=(目标类型)(被转换的数据);
  • boolean 类型不能转换为其他的数据类型

引用数据类型非常多,大致包括:类、接口类型、 数组类型、 枚举类型、 注解类型、字符串;

3.运算符与表达式
img

说明:

  • 加法’+’可以完成字符串拼接
  • 除法“/”当两边为整数时,取整数部分
  • 小数取余没有意义
  • 非boolean型变量不能进行逻辑运算
    img
  • 只有赋值运算符会改变变量自身的值
  • 右移位时符号位拓展,移位数为0-31(int)或0-63(long),且只能对整数操作
    img

三元运算符:(条件表达式)?表达式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.“&”和“&&”的区别

单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。


参考文献:

[1]oracle-Java 教程

[2]菜鸟-Java 教程

posted @ 2022-01-19 20:03  你准备好了吗  阅读(47)  评论(0编辑  收藏  举报