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知识库]java基础(到面向对象)

java基础入门篇

一、JDK的安装

1.配置

  • 首先百度搜索jdk,官网傻瓜式下载下来。

  • 配置系统变量 我的电脑右键属性-----高级系统设置-----高级------找到环境变量-----在系统变量里新建一个JAVA_HOME------输入jdk的路径

image-20210721140805544

  • 配置path变量 找到系统变量里的path 新建%JAVA_HOME%\bin %JAVA_HOME%\jre\bin

2.测试jdk配置是否成功

打开命令提示符输入cmd java-version测试

image-20210721141511329

配置成功

3.使用

代码 javac 文件名.java (编译成class文件)

java 文件名

4.jdk帮助文档

百度搜索相对版本帮助文档

二、java运行机制

  • jdk(java开发工具)包含jre(java运行环境)和jvm(java虚拟机)

? jre包含jvm

  • java特性:编译型—编译器翻译成计算机可以执行的代码

? 解释型----边执行边解释 (一些网页制作要求速度比较低)

  • 运行机制:先编译成class再到–类装载器—字节码消验器—解释器—操作系统平台

三、IDEA的使用

idea是集成开发环境 字体修改在设置的font里面

打开软件 新建项目project-----project SDK里要选择jdk的文件

image-20210726125656185

1.快捷键

main方法快捷键psvm

public class HelloWorld {
    public static void main(String[]args) {
        System.out.println("Hello world!");
    }
}
    

输出语句快捷键sout

复制当前行到下一行ctrl+D

自动排错alter+enter

查看类ctrl+鼠标左键

2.新建项目

建立空项目javase------ new一个module(模块) -------点项目结构 设置两个apply点ok

image-20210726125713200

3.注释

注释:单行注释://
多行注释:/*回车 中间写文字 */

? [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rpNc5CkD-1627279227601)(C:\Users\c’s\AppData\Roaming\Typora\typora-user-images\image-20210721143859888.png)]

颜色修改:设置–编辑----color scheme—java—comments(注释 块行 文档)

javaDoc(java文档注释)

是用来生成自己的API文档的

  • 参数

    @author 作者名

    @version 版本号

    @since 指明最早使用的jdk版本

    @param 参数名

    @return 返回值情况

    @throws 异常抛出情况

  • APi显示

    先打开当前路径,输入cmd

image-20210726125738144

输入代码:javadoc -encoding UTF-8 -charset UTF-8 文件名.java

打开index.html

image-20210726125805372

4.反编译

java–class(字节码文件)----反编译(idea)

四、标识符

1.关键字

abstractassertbooleanbreakbyte
casecatchcharclassconst
continuedefaultdodoubleelse
enumextendsfinalfinallyfloat
forgotoifimplementsimport
instanceofintinterfacelongnative
newpackageprivateprotectedpublic
returnstrictfpshortstaticsuper
switchsynchronizedthisthrowthrows
transienttryvoidvolatilewhile

2.标识符注意点

  • 所有的标识符都以字母、($) 、(_)开始

  • 首字母后可以字母、($) 、(_)或者数字组成

  • 不能使用关键字作为变量名和方法名

    例如:

    public class return   关键字作为方法名错误
    String return = "xxx"  关键字作为变量名错误
    
  • 不建议使用中文命名作为标识符

3.数据类型

分为八大基本数据类型和引用类型

基本数据类型:

  • 数值型

    整数类型:byte short int long(用大写L)

    浮点型:float double 例如float b=1.1f(要加f) double a=1.1

    字符类型:char

  • boolean类型(false 和true)

引用类型:类、接口、数值

拓展:float和double

float f=0.1f;
double d=1.0/10;
System.out.println(f==d);//为false
float a1=777777777777777771f;
float a2=a1+1;
System.out.println(a1==a2);//为true
//浮点数特点舍入误差 大约 接近但不等于,最好完全使用浮点数进行比较,BigDecimol数值工具类表示比较好

char

char a1=‘A’ //所有字符本质还是数字 System.out.println((int)a1)输出结果为65

//编码 Unicode表 1-65536 最早的Excel 也是到65536

boolean

boolean flag =true
if (flag==true){}//(新手使用)
if(flag){}//(默认)

java代码特点要精简易读

4.什么是字节

是计算机内部数据存储的最小单位,字节是计算机数据处理的基本单位

一个字节有八位 1byte=8bit(1B=8b)

1KB=1024B

1M=1024KB

1G=1024M

5.进制

进制:二进制0b 十进制 八进制0 十六进制0x(0-9 A-F)

6.强转

从低到高为

byte short char----------int-----------long----------float---------double

  • 强制转换:低到高

    例如:int a = 123

    short b = (short)b

  • 自动转换:高到低

    例如:int a = 123

    double b = a

注意事项:

  • 不能对boolean值进行转换

  • 转换时候可能存在溢出,还有精度问题

    int money = 10_0000_0000;
    int years = 20;
    int total = money*years;
    System.out.println(total);//溢出
    long total1 = money*((long)years);//要先使用long转换掉,因为默认是int计算完结果是int,转换之前已经存在问题
    
  • jdk7有新特性,数字之间可以使用下划线_分割

    例如:int money = 10_0000_0000_0000

7.转义字符

\t 制表符 \n换行

五、变量

1.变量分类

java是强类型语言,每个变量都要声明类型。

数据类型 变量名 = 值

变量分为三类:类变量 实例变量 局部变量

public class Demo05 {
    static int a = 100;  //类变量(带static)
    String name; //实例变量:在类里面方法外面。从属于对象(这个类),(默认值:不进行初始化为0或者0.0  布尔值false,除了基本类型其他都是null)

    public static void main(String[] args) {
        int i=10;//局部变量,必须声明和初始化值,只在该方法里
        System.out.println(i);
        Demo05 demo05 = new Demo05();
        System.out.println(demo05.name);//实例变量必须这样new一个才能使用
        System.out.println(a);//可以直接用类变量
    }
}

2.常量

初始化后不能再改变,一般使用大写字符

格式:final 常量 = 值;

final int CS = 8;

3.命名规范

  • 变量和方法名和类名:见名只意

? 例如 String name = “CS”

  • 类名:首字母大写和驼峰原则ClassRoom

  • 方法名:首字母小写和驼峰原则eatFun()

  • 类成员变量:首字母小写和驼峰原则:classRoom 第一个单词外,其余单词首字母大写

  • 局部变量:首字母小写和驼峰原则 String studentName = “xxx”;同类成员变量一样

  • 常量:大写字母和下划线_: LAST_MONEY

    拓展:[阿里巴巴开发手册](阿里巴巴开发手册_百度搜索 (baidu.com))

六、运算符

主要掌握前四个

  • 算术:= - * / %(取余数) ++ –

  • 赋值:=

  • 关系:> ,< ,>=,<=,==,!= (返回的结果是true和false)

  • 逻辑运算符:&& (短路与,两个都true才true),||(短路或,一个true就true) ,!(非,取反)

  • 位运算符:|,&,^(异或,两个不相等为1),<<(左移),>>(右移)

例如:A = 0101 1100

? B = 0010 0101

? A&B=0000 0100

? A|B=0111 1101

? A^B=0111 1001

? ~B=1101 1010

例如:2<<4

0000 0010 =2

右移四位

0010 0000 =32

  • 条件运算符?:

? 例如:a>5 ? true : false(满足为true不满足为false)

  • 扩展赋值:+=,-=

    例如:a+=b(a=a+b)

自增和自减:++ –

int b = a++;   //先给b赋值,再自增。b原来,a+1
int c = ++a;  //先自增,再给c赋值。a+1 c+1

七、包的建立以及机制

建立:

image-20210726125825102

机制:

  • 命名: 一般用公司域名倒置作为包名:com.chensheng.blog(com.baidu.www)

  • 语法:package pkg1[. pag2[. pag3…]]; 如:package com.chen.operator

  • 导入:要使用其他包 import package[.package2…].(classname|*);

    如:import com.chen.base.文件名

    导入所有:import com.chen.*

显示问题:

image-20210726125840979

压缩空的中间包去掉,这样就可以层级显示。

八:字符串的连接使用

public class Demo03 {
    public static void main(String[] args) {
        int a = 1;
        int b = 2;
        System.out.println(""+a+b); //输出值为12
        System.out.println(a+b+""); //输出值为3
    }
}

九、流程控制

1.Scanner对象

语法:Scanner 对象名 = new Scanner(System.in)

hasNextLine(检测下一行有无输入)和hasNext(检测有无下一个输入)使用:

  • next(不能得到带有空格的字符串)
public class Demo01 {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in); //键盘接收数据        System.out.println("next接收:");        if (scanner.hasNext()) {//判断用户有没有输入字符串            String str = scanner.next();            System.out.println("输出内容为:"+str); //输入h x,只能输出h        }        scanner.close();  //IO流的类如果不关闭会一直占用资源    }}
  • nextLine(输出所有字符)

    public class Demo02 {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        System.out.println("nextLine接收:");        if (scanner.hasNextLine()) {            String str = scanner.nextLine();            System.out.println("输出内容:"+str); //输入h x,输出h x        }        scanner.close();    }}
    

hasNextInt检测有无输入整数

hasNextFloat检测有无输入小数

  • 补充:System.out.println(“文字:”+n+“文字,文字”+all) 输出格式

2.顺序结构

3.选择结构

  • if结构

    if (布尔表达式1) {    true执行语句1} else if (布尔表达式2) {    true执行语句2} else {    其他执行语句}scanner.close(); //要记得关闭
    

    示范:

    public class Demo01 {    public static void main(String[] args) {        //判断字符串是否相等        Scanner scanner = new Scanner(System.in);        System.out.println("请输入字符串");        String str = scanner.nextLine();        String s = "Hello World";        if (str.equals(s)) { //比较字符串用equals            System.out.println("相等");        }        scanner.close();    }}
    
  • 嵌套if

    if (布尔表达式1) {	//表达式为1时	if (布尔表达式2) {		//表达式为2时	}}
    
  • switch多选择

    语法:语句中变量类型可以是byte short int char String

    switch (expression) {    case value:        System.out.println("xxx");        break; //可选    case value:        System.out.println("xxx");        break; //可选    default: //可选        System.out.println("xxx");
    

示范:

public class Demo03 {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        System.out.println("请输入今天星期几:");        String day = scanner.nextLine();        switch (day) {   //switch匹配一个具体值            case "一":                System.out.println("今天星期一");                break;            case "二":                System.out.println("今天星期二");                break; //如果不加break,case会穿透,day为一,这句话也会输出            case "三":                System.out.println("今天星期三");                break;            case "日":                System.out.println("今天星期日");                break;            default:                System.out.println("你输入的东西有误");        }    }}

4.循环结构

01、while循环(先判断后执行)

语法:

while(布尔表达式) {	//循环内容}

死循环:

while(true) {	//循环内容}

02、do…while循环(先执行后判断)

特点:至少循环一次

语法:

do {    //代码语句}while(布尔表达式);

03、for循环

  • 语法:
for(初始化;布尔表达式;更新) {  //先初始化----再表达式----再代码语句----再更新    //代码语句}
  • 死循环:
for( ; ; ) {    }
  • 快捷键:100.for

  • 拓展:

System.out.print()//输出不换行System.out.println()//输出换行
  • 案例:九九乘法表
public class ForDemo03 {    public static void main(String[] args) {        for (int i = 1; i <= 9; i++) {   //判断第几行            for (int j = 1; j <=i; j++) {  //判断第几行需要输出的东西                System.out.print(i+"*"+j+"="+(i*j)+"\t");            }            System.out.println(); //每输出一行换行        }    }}
  • 增强for循环:用于数组和集合
for(声明语句:表达式) {    //代码句子}

例如:

for (int a : numbers) {    System.out.println(a);} //遍历数组

5.break和continue

break:结束循环

continue:结束当前执行语句,到下一个循环

拓展:goto关键字 类似现在的label

十、方法

1.方法定义和调用

修饰符 返回值类型 方法名(参数类型 参数名){
    方法体
    return 返回值;
}

示范:

public class Demo01 {
    public static void main(String[] args) {
        //以下两句代码返回值为int的sum方法1
        int sumAdd =sum(1,2);//1和2为实际参数
        System.out.println(sumAdd);
        //System.out.println(sum(1,2));调用sum方法2
        text();//(调用返回值为void的text方法)
    }
    public static int sum(int a,int b) { //a,b为形式参数
        return a+b;
    }
    public static void text() {
       System.out.println("xxx")
    }
}
  • 终止方法

    return 0;

  • 调用返回值void的第二种方法

    public class Demo04 {
        public static void main(String[] args) {
            Demo04 demo04 = new Demo04(); //法二
            demo04.test(1);
        }
        public void test(int i) {
            System.out.println();
        }
    }
    

2.方法重载

特点:

1.方法名相同

2.参数列表必须不同(个数、类型、参数排列顺序)

3.返回值可相同可不同

4.单返回值类型不同不足变成方法重载

3.命令行传参数

代码示例:

public class Demo03 {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println("args[i]" + args[i]);
        }
    }
}

image-20210726125859391

  • 先show in explorer
  • 在当前文件夹输入cmd进入命令行终端
  • 再javac 文件名.java
  • 切换src下java 目录名…文件名 需要传输的命令

4.可变参数(不定向参数)

  • 特点:在指定参数后面加一个省略号(…) ,一个方法只能定义一个可变参数,必须是方法的最后一个参数。

    public void test(int ... i) 
    

5.递归

理解:A方法调用A方法

递归头:啥时候不需要调用自身方法

递归体:啥时候需要调用自身方法

示范:求阶乘

public class Demo06 {
    public static void main(String[] args) {
        System.out.println(f(1));
    }
    public static int f(int n) {
        if(n==1) {
            return 1;
        }else {
            return n*f(n-1);
        }
    }
}

十一、数组

1.数组声明创建

数组是相同类型的有序集合

代码格式:

数据类型[] 名字 = new 名字[数组规格大小]

获取数组长度:数组名.length

赋值:数组名[0] = 1

遍历:for(int i = 0 ; i < 数组名.length ; i++)

2.初始化

  • 静态初始化int[] a= {1,2,3}
  • 动态初始化(含默认初始化)int[] a= new int[10]

3.特点

  • 长度确定,不可改变
  • 可以是任何数据类型
  • 数组对象本身在堆中
  • 数组边界:ArrayIndexOutOfBoundsException:数组下标越界异常

4.使用

For-Each循环

数组作方法入参

数组作返回值

5.多维数组

int[][] a = {{1,2},{1,3},{2,4}}; 

6.Arrays类

Arrays加. : fill赋值、sort升序、equal比较相等、binarySearch查找数组元素、toString打印数组元素

7.稀疏数组

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-27 16:04:44  更:2021-07-27 16:05:18 
 
开发: 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年5日历 -2024/5/3 21:24:41-

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