Singerw's Repository Singerw's Repository
首页
  • 相关文章

    • HTML相关文章
    • CSS相关文章
    • JavaScript相关文章
  • 学习笔记

    • JavaScript笔记
    • ES6笔记
    • Vue笔记
  • 相关文章

    • Spring相关文章
    • SpringBoot相关文章
    • MyBatis相关文章
    • MySQL相关文章
  • 学习笔记

    • SpringBoot笔记
    • Spring笔记
    • MyBatis笔记
    • MySQL笔记
    • JavaWeb笔记
    • JavaCore笔记
  • 学习笔记

    • Linux笔记
    • Git笔记
    • 技术文档
  • 偏门技术

    • GitHub技巧
    • 博客搭建
    • 科学上网
  • 安装教程

    • JDK
    • MySQL
    • Node.js
    • Linux
  • 终身学习
  • 面试人生
  • 心情杂货
  • 生活随笔
  • 归档
  • 标签
GitHub (opens new window)

Singerw

谁能够凭爱意将富士山私有
首页
  • 相关文章

    • HTML相关文章
    • CSS相关文章
    • JavaScript相关文章
  • 学习笔记

    • JavaScript笔记
    • ES6笔记
    • Vue笔记
  • 相关文章

    • Spring相关文章
    • SpringBoot相关文章
    • MyBatis相关文章
    • MySQL相关文章
  • 学习笔记

    • SpringBoot笔记
    • Spring笔记
    • MyBatis笔记
    • MySQL笔记
    • JavaWeb笔记
    • JavaCore笔记
  • 学习笔记

    • Linux笔记
    • Git笔记
    • 技术文档
  • 偏门技术

    • GitHub技巧
    • 博客搭建
    • 科学上网
  • 安装教程

    • JDK
    • MySQL
    • Node.js
    • Linux
  • 终身学习
  • 面试人生
  • 心情杂货
  • 生活随笔
  • 归档
  • 标签
GitHub (opens new window)
  • Java 核心语法
    • 一、Java 开发环境配置
      • 1.1 Jdk下载与配置
      • 1.2 JDK JRE JVM定义与基本关系
    • 二、Java 基本语法
      • 2.1 关键字
      • 2.2 表达式
      • 2.3 标识符 常量 变量
      • 2.4 Java命名规则
      • 2.5 注释
    • 三、Java 数据类型及其拓展
      • 3.1 基本数据类型
      • 3.2 引用类型
    • 四、Java 运算符
      • 4.1 算术运算符
      • 4.2 关系运算符
      • 4.3 位运算符
      • 4.4 逻辑运算符
      • 4.5 赋值运算符
      • 4.6 条件运算符(?:)
      • 4.7 运算符优先级表
      • 4.8 控制台输入
      • 4.9 练习
    • 五、类加载器
  • Java 流程控制
  • Java 数组
  • Java 面向对象
  • Java 集合框架
  • Java 深入面向对象
  • Java 常用类(API)
  • Java 内部类
  • 深入理解 Java 异常
  • Java IO流
  • Java 多线程
  • Java 网络编程
  • Java 设计模式
  • 深入了解序列化
  • DBUtil 手写工具类
  • 《JavaCore》学习笔记
Singerw
2021-08-22

Java 核心语法

# JavaSE基础

Java 是由Sun Microsystems公司于1995年5月推出的高级程序设计语言。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

语言:java [编译+解释] C[编译] JavaScript【解释】

Java语言:特性:面向对象,跨平台,健壮性,分布式,多线程等

Jdk:jdk->jre->jvm

# 一、Java 开发环境配置

# 1.1 Jdk下载与配置

# 1. Jdk下载

官方下载地址: https://www.oracle.com/java/technologies/javase-downloads.html#JDK (opens new window)

# 2. 环境配置

配置环境变量:右击 我的电脑 --> 属性 --> 高级系统设置 --> 环境变量

  • 在系统变量里新建 JAVA_HOME变量 , 添加变量值: F:\Java\jdk1.8.0_281
  • 在Path变量中(已存在不用新建), 添加变量值 : %JAVA_HOME%\bin %JAVA_HOME%\jre\bin
  • 新建 Classpath, 添加变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

补充环境变量的解析:

JAVA_HOME为JDK的安装路径

Classpath:Java加载类路径,只有类在Classpath 中Java命令才能识别,在路径前加了个.表示当前路径。

Path:系统在任何路径下都可以识别Java , Javac命令。

# 1.2 JDK JRE JVM定义与基本关系

# 1. 三者定义

JDK(Java Development Kit)是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库。

JRE(Java Runtime Environment) Java运行环境,包含JVM标准实现及Java核心类库。

JVM(Java Virtual Machine),即Java虚拟机, Java运行时的环境,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

# 2. 基本关系

1.三者联系: JVM不能单独搞定class的执行,解释class的时候JVM需要调用解释所需要的类库lib。在JDK下面的的jre目录里面有两个文件夹bin和lib,在这里可以认为bin里的就是jvm,lib中则是jvm工作所需要的类库,而jvm和lib和起来就称为jre。JVM+Lib=JRE。总体来说就是,我们利用JDK(调用JAVA API)开发了属于我们自己的JAVA程序后,通过JDK中的编译程序(javac)将我们的文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

2.三者区别: JDK和JRE区别:在bin文件夹下会发现,JDK有javac.exe而JRE里面没有,javac指令是用来将java文件编译成class文件的,这是开发者需要的,而用户(只需要运行的人)是不需要的。JDK还有jar.exe, javadoc.exe等等用于开发的可执行指令文件。这也证实了一个是开发环境,一个是运行环境。 JRE和JVM区别:JVM并不代表就可以执行class了,JVM执行.class还需要JRE下的lib类库的支持,尤其是rt.jar。 —————————————————————————————————————————————————————— 原文链接:https://blog.csdn.net/ancientear/article/details/79483592


# 二、Java 基本语法

# 2.1 关键字

下面列出了Java保留字。这些保留字不能用于常量、变量、和任何标识符的名称。

# 2.2 表达式

Java语言中的表达式可以是如下几种:

  • 常量:19,false
  • 用单引号引起来的字符:'A' '中'
  • 用双引号引起来的字符:"中软" "卓越"
  • 正确声明的变量:name stuld
  • 用运算符连接的:i++ x+2 (m+n)

# 2.3 标识符 常量 变量

# 1. Java标识符

Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。

关于Java标识符,有以下几点需要注意:

  • 所有的标识符都应该以字母(A-Z或者a-z),美元符($)、或者下划线(_)开始
  • 首字符之后可以是任何字符的组合
  • 关键字不能用作标识符
  • 标识符是大小写敏感的
  • 合法标识符举例:age、$salary、_value、__1_value
  • 非法标识符举例:123abc、-salary

# 2. Java变量

Java中主要有如下几种类型的变量

  • 局部变量
  • 类变量(静态变量)
  • 成员变量(非静态变量)

# 3. Java常量

JAVA常量就是在程序中固定不变的值,是不能改变的数据。例如数字1、字符“a”、浮点数3.2等。在Java中,常量包括整型常量、浮点数常量、布尔常量、字符常量等。

# 实例

package com.singerw.day01;

public class Work01 {
    /*
     * @Author Singerw_辛格
     * @Description //TODO
     * @Date 22:49 2021-05-09
     * @Param
     * @return
    **/
    public static void main(String[] args) {
        // 定义一个整型变量
        // a 称为变量名
        // 1 通常有字母 数字 下划线和 $ 符号组成,不能重复
        // 2 不能以数字开头
        // 3 不能是java中关键字,在相同作用域内不能重复
        int a = 12;     // 变量,a的值是可以随时改变的
        a = a + 1;      //a = a + 1 先计算a+1 =》12+1  =》 a = 13
        System.out.println(a + 1);

        final int b = 12;   //final为常量,在程序运行过程中,值u不能改变
        
        b = b + 1;
        final double d = 3.14;
        d = d+1;
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 4. 案例

交换两个变量的值

package com.singerw.day01;
/**
* @Author Singerw_辛格 
* @Description //TODO 
* @Date 23:07 2021-05-09
* @Param 文档注释[类前或者 方法前] 注释是一种规范 这个类只是一个测试类...
* @return  
*/
public class Work02 {
    /**
    * @Author Singerw_辛格 
    * @Description //TODO 
    * @Date 23:07 2021-05-09
    * @Param 方法前注释
    * @return  
    */
    public static void main(String[] args) {
        // 1- 声明变量(告知这个变量的数据类型) a
        // 2- 赋值为1
        int a = 1;
        // 定义变量b并赋值为2
        int b = 2;
        System.out.println("********交换前***********");
        System.out.println(a);
        System.out.println(b);
        // 交换a和b的值; 解决方案 : 使用临时变量(空杯子)
        // 步骤1 将a的值赋给c
        int c = a;
        // 步骤2 将b的值 赋给a
        a = b;
        // 步骤3 将c的值 赋给 b
        b = c;
        System.out.println("********交换后***********");
        System.out.println(a);
        System.out.println(b);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37

# 2.4 Java命名规则

  • 大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。
  • 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
  • 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
  • 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。
  • 主方法入口:所有的Java 程序由**public static void main(String*[]* args)**方法开始执行。

# 2.5 注释

public class MyFirstJavaProgram{
   /* 这是第一个Java程序
    *它将打印Hello World
    * 这是一个多行注释的示例
    */
    public static void main(String []args){
       // 这是单行注释的示例
       /* 这个也是单行注释的示例 */
       System.out.println("Hello World"); 
    }
} 
1
2
3
4
5
6
7
8
9
10
11

# 三、Java 数据类型及其拓展

# 3.1 基本数据类型

# 1. 整型

byte short int long

int num1 = 10;   //最常用的整数数据类型
byte nmu2 = 20;
short num3 = 30;
long num4 = 30;   //Long类型要在数字后面加个L,用来区分
1
2
3
4

# 2. 浮点型(小数)

float double

float num5 =50.1f;   //带小数点的默认都是double类型,float类型要在数字后面加个f,强类型   
double num6=3.141592654785;   //双精度
double num7=3.14;   //单精度
1
2
3

# 3. 字符型

char String

char name = '张';
String name2="张欣牛逼";   //字符串String不是关键字,是数据类型
1
2

# 4. 布尔值(标识是非)

boolean

boolean flag = true;   //真
boolean flag = false;  //假
1
2

# 3.2 引用类型

  • 自定义类
  • 接口
  • 枚举
  • 数组
  • 注解

# 四、Java 运算符

  • 算术运算符
  • 关系运算符
  • 位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其他运算符

# 4.1 算术运算符

操作符 描述 例子
+ 加法 - 相加运算符两侧的值 A + B等于30
- 减法 - 左操作数减去右操作数 A – B等于-10
* 乘法 - 相乘操作符两侧的值 A * B等于200
/ 除法 - 左操作数除以右操作数 B / A等于2
% 取模 - 左操作数除以右操作数的余数 B%A等于0
++ 自增 - 操作数的值增加1 B++ 或 ++B 等于 21
-- 自减 - 操作数的值减少1 B-- 或 --B 等于 19

# 4.2 关系运算符

运算符 描述 例子
== 检查如果两个操作数的值是否相等,如果相等则条件为真。 (A == B)为假(非真)。
!= 检查如果两个操作数的值是否相等,如果值不相等则条件为真。 (A != B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 (A> B)非真。
< 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 (A <B)为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 (A> = B)为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。 (A <= B)为真。

# 4.3 位运算符

操作符 描述 例子
& 按位与操作符,当且仅当两个操作数的某一位都非0时候结果的该位才为1。 (A&B),得到12,即0000 1100
^ 按位异或操作符,两个操作数的某一位不相同时候结果的该位就为1。 (A ^ B)得到49,即 0011 0001
〜 按位补运算符翻转操作数的每一位。 (〜A)得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。 A>>>2得到15即0000 1111

# 4.4 逻辑运算符

# 4.5 赋值运算符

操作符 描述 例子 结果
= 简单的赋值运算符,将右操作数的值赋给左侧操作数 int a =7 7
+= 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 int a =7 , a+=2 9
-= 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 int a =7 , a-=2 5
*= 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 int a =7 , a*=2 14
/= 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 int a =7 , a/=2 3
%= 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 int a =7 , a%=2 1

# 4.6 条件运算符(?:)

# 4.7 运算符优先级表

# 4.8 控制台输入

Scanner input = new Scanner(System.in);
System.out.println("请输入两个整数");
a = input.nextInt();
b = input.nextInt();
1
2
3
4

# 4.9 练习

1.控制台输入两位整数,计算和差商积

package com.singerw.day03;

import java.util.Scanner;

public class Work02 {
    /*
     * @Author Singerw_辛格
     * @Description //TODO
     * @Date 20:05 2021-05-08
     * @Param
     * @return
     **/
    public static void main(String[] args) {

        //两个变量的值是从控制台输入进来的
        int a,b;
        //输入方式是用到Java中工具类Scanner
        Scanner input = new Scanner(System.in);
        System.out.println("请输入两个整数");

        a = input.nextInt();
        b = input.nextInt();

        //输出和差积商
        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

2.控制台输入一个五位数,并计算五位数个位十位百位千万万位的和

package com.singerw.day03;

import java.util.Scanner;

public class Work03 {
    /*
     * @Author Singerw_辛格
     * @Description //TODO
     * @Date 20:19 2021-05-08
     * @Param
     * @return
    **/
    public static void main(String[] args) {
        int a;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个五位数整数");
        a = input.nextInt();

        int g = a%10;
        int s = a/10%10;
        int b = a/100%10;
        int q = a/1000%10;
        int w = a/10000%10;

        int sum =  g + s + b + q + w;
        System.out.println(sum);
    }
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

3.控制台输入一个数,判断是否为水仙花数

package com.singerw.day03;

import java.util.Scanner;

public class Work04 {
    /*
     * @Author Singerw_辛格
     * @Description //TODO
     * @Date 20:23 2021-05-08
     * @Param
     * @return
    **/
    public static void main(String[] args) {
        int a;
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整数");

        a = input.nextInt();
        int g = a % 10;
        int s = a /10 % 10;
        int b = a /100 %10;
        int sum = g*g*g+s*s*s+b*b*b;
        String info = sum == a?"数字"+a+"是水仙花数":"数字"+a+"不是水仙花数";
        System.out.println(info);
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 五、类加载器

编辑 (opens new window)
#JavaCore
Java 流程控制

Java 流程控制→

最近更新
01
Maven资源导出问题终极版
10-12
02
《MyBatis-Plus》学习笔记
10-07
03
MyBatis-Plus—配置日志
10-07
更多文章>
Theme by Vdoing | Copyright © 2020-2021 版权所有 | repository.singerw.com
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×