IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Java基础笔记 -> 正文阅读

[开发工具]Java基础笔记

Java基础

1、JDK、JRE、JVM

JDK:Java开发工具包,包括JRE和开发的工具(如编译工具:javac.exe、打包工具:jar.exe等)
JRE:Java运行环境
JVM:Java虚拟机
image-20210819202244987

为什么要配置path环境变量?

? 为了在任何路径下都可以运行Java指令

2、使用文本文档进行java代码的编写

  • 将java代码编写到.java为后缀名的文件中
  • 通过javac命令对该java文件进行编译
  • 通过java命令对生成的class文件进行运行
image-20210819203250048

示例:

  1. 用记事本编写java代码,后缀名改为.java

    class HelloWorld{
           public static void main(String[] args){
                 System.out.print("hello,Xiangxiang!");
           }
    }
    
  2. 在该目录下打开cmd,输入javac hello.java进行编译

    image-20210819204833190

    出现错误!

    错误原因为记事本文件编码为UTF-8,而Windows的cmd编码为GBK

    解决方法:编译语句改为javac -encoding UTF-8 hello.java

    编译成功,出现.class文件

    image-20210819205432974

  3. 使用java命令运行.class文件

    image-20210819205549154

3、注释

//单行注释

/**/多行注释

/** */文档注释(java注释,注释内容可以被JDK所提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档)

文档注释示例:

  1. 添加文档注释

    /**
        @author  李想想
        @version v1.0
    */
    public class HelloWorld{
           public static void main(String[] args){
                 System.out.print("hello,Xiangxiang!");
           }
    }
    
  2. 通过javadoc进行解析

    javadoc -d myhello -author -version -encoding UTF-8 HelloWorld.java
    

    运行成功,打开index.html网页

    image-20210819212015519

注意

  • 使用javadoc解析的类必须声明为public
  • 类名和文件名需要一致
  • 解决中文乱码问题可以通过修改文件编码为ANSI或者编译时添加-encoding UTF-8

4、关键字、保留字、标识符

image-20210819220425098

保留字:现有Java版本尚未使用,但以后可能会作为关键字使用,如gotoconst

标识符:对各种变量方法等要素命名时使用的字符序列

标识符命名规则

  • 由26个英文字母大小写,0~9,下划线_,$组成
  • 由英文字母,_或者$开头
  • 不能使用关键字和保留字
  • 不能有空格
  • 严格区分大小写,长度无限制

5、变量

变量格式:数据类型 变量名 = 变量值

数据类型

  1. 基本数据类型

    • 整型:byte(1字节)、short(2字节)、int(4字节)、long(8字节,以L或者l结尾)
    • 浮点型:float(4字节,以F或者f结尾)、double(8字节)
    • 字符型:char(2字节)
    • 布尔型:boolean

    运算规则

    ? a)自动类型提升(容量小–>容量大)

    ? bytecharshort–>int–>long–>float–>double

    ? b)强制类型转换(容量大–>容量小)

                  ```java
                  double d1=12.9;
                  int i1=(int)d1;
                  System.out.print(i1);   //输出为12
                  ```
    

    注意

    ? 对于整型常量,默认类型为int型,对于浮点型常量,默认类型为double

       ```java
       byte b=12;
       byte b1=b+1;   //编译错误,1默认为int型
       ```
    
  2. 引用数据类型

    • 类:class
    • 接口:interface
    • 数组:array

String

  • 几个例子

    String s1="hello world";
    String s2=3.5f+"";  //3.5
    System.out.println(3+4+"hello!");   //7hello!
    System.out.println("hello!"+3+4);   //hello!34
    System.out.println('a'+1+"hello!");    //98hello!
    Systrm.out.println("hello!"+'a'+1);    //hello!a1
    

6、运算符

  • 算术运算符
image-20210820144943285

注意

? % 最终结果符号与被模数符号一致

  • 赋值运算符:=、+=、-=、*=、/=、%=
  • 比较运算符:>、<、<=、>=、==、!=、instanceof
  • 逻辑运算符:&、|、!、&&、||、^
  • 位运算符:<<、>>、>>>、&、|、^、~
  • 三元运算符:(条件表达式)?表达式1:表达式2

7、程序流程结构

顺序结构、循环结构、分支结构

8、Scanner类

  • 导包

    import java.util.Scanner;
    
  • Scanner实例化

    Scanner in=new Scanner(System.in);
    int num=in.nextInt();
    

9、数组

常用算法

  • 查找

    二分法查找

    //二分法查找
     public void search(int[] array,int num){
         int head=0;
         int end=array.length-1;
    
         while (head<=end){
             int mid=(head+end)/2;
    
             if(num==array[mid]){
                 System.out.println("元素位置为"+mid);
                 return;
             }
             else if(num>array[mid]){
                 head=mid+1;
             }
             else {
                 end=mid-1;
             }
         }
         System.out.println("未找到指定元素!");
     }
    
  • 排序

    1. 插入排序

          //插入排序
          public void insertSort(int[] array){
              for(int i=1;i<array.length;i++){
                  int temp=array[i];
                  int j=i-1;
                  while (j>=0&&array[j]>=temp){
                      array[j+1]=array[j];
                      j--;
                  }
                  array[j+1]=temp;
              }
          }
      
    2. 快速排序

       //冒泡排序
          public void bubbleSort(int[] array){
              for(int i=0;i<array.length;i++){
                  for(int j=0;j<array.length-1;j++){
                      if(array[j]>=array[j+1]){
                          int temp=array[j];
                          array[j]=array[j+1];
                          array[j+1]=temp;
                      }
                  }
              }
          }
      
       //快速排序
          public void quickSort(int[] array,int low,int high){
              int a=low,b=high;
              if(a>=b){
                  return;
              }
      
              int pivotkey=array[a];
      
              while (a<b){
                  while (a<b&&array[b]>=pivotkey){
                      b--;
                  }
                  array[a]=array[b];
      
                  while (a<b&&array[a]<=pivotkey){
                      a++;
                  }
                  array[b]=array[a];
              }
              array[a]=pivotkey;
              quickSort(array,low,a-1);
              quickSort(array,a+1,high);
          }
      
    3. 选择排序

      //选择排序
          public void selectSort(int[] array){
              for(int i = 0; i < array.length - 1 ; i++){
                  int min = i;
                  for (int j = i + 1; j < array.length ;j++){
                      if(array[j] < array[min]){
                          min = j;
                      }
                  }
                  if(min != i){
                      int temp =  array[min];
                      array[min] = array[i];
                      array[i] = temp;
                  }
              }
          }
      
    4. 归并排序

      public static void mergeSort(int[] a,int s,int e){
          int m = (s + e) / 2;
          if (s < e){
            mergeSort(a,s,m);
            mergeSort(a,m+1,e);
            //归并
            merge(a,s,m,e);
          }
        }
      
        private static void merge(int[] a, int s, int m, int e) {
          int[] temp = new int[(e - s) + 1];
          int l = s;
          int r = m+1;
          int i = 0;
            
          while (l <= m && r <= e){
            if (a[l] < a[r]){
              temp[i++] = a[l++];
            }else{
              temp[i++] = a[r++];
            }
          }
      
          while (l <= m){
            temp[i++] = a[l++];
          }
          while (r <= e){
            temp[i++] = a[r++];
          }
          
          for (int n = 0; n < temp.length; n++) {
            a[s+n] = temp[n];
          }
          
        }
      

      Arrays工具类

      image-20210903155929751

10、面向对象

  1. 对象的内存解析
image-20210903161542265

引用类型的变量,只可能存储两类值:null或地址值

JVM规范

  • 虚拟机栈,即为平时提到的栈结构。我们将局部变量存储在栈结构中

  • 堆,我们将new出来的结构(比如数组、对象)加载在堆空间中。补充:对象的属性(非static的)加载在堆空间中

  • 方法区:类的加载信息、常量池、静态域

  1. 可变个数形参

    • 格式:数据类型 … 变量名

    • 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个…

  2. 成员变量与局部变量

    • 在类中的位置不同:成员变量在类中方法外,局部变量在类中方法内或方法声明上
    • 在内存中的位置不同:成员变量在堆内存里,局部变量在栈内存里
  3. 权限修饰符

    private缺省protectedpublic

    image-20210903171953192
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:45:05  更:2021-09-04 17:46:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/23 2:03:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计