JAVA基础入门自学篇

2023-12-29 10:30:18

JAVA基础入门

环境准备

  • win10/ide
  • Java环境

零开始搭建项目

1. 创建空项目

  • 依次点击:File—>New—>Project
  • 选择:Empty Project, 输入项目名,如图所示

image-20231101174721495

2. 创建Module

  • 依次点击:File—>New—>Module

image-20231101180522949

  • 选择对应JDK等相关信息,如图所示

image-20231101175242520

3. 创建java文件

  • 在src文件右键依次点击:New—>Java Class

image-20231102092219719

第一个JAVA程序

  • 后续再详细讲解

image-20231102142520102

JAVA注意事项

编写 Java 程序时,应注意以下几点:

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

注释

注释的作用是起到提示作用,注释不会被运行

  • 单行注释,两个斜杠表示://
public class HelloWorld {
    public static void main(String[] args) {
        // 这是单行注释
        System.out.println("Hello");
    }
}
  • 多行注释,可以注释一段文字 /* 注释 */
  • 输入/*,按回车即可自动补全,再输入注释内容
public class HelloWorld {
    public static void main(String[] args) {
        /*
        这是多行注释这是多行注释
        这是多行注释这是多行注释
         */
        System.out.println("Hello");
    }
}
  • 文档注释,可以表示这段代码是谁写的,或表达时间等等,一般不使用

  • 以下表示代码作者:无涯

public class HelloWorld {
    /**
     * @author 无涯
     这是文档注释
     */
    public static void main(String[] args) {
        System.out.println("Hello");
    }
}

标识符

  • JAVA所有组成部份都需要用到名字,如文件名、类名、方法名、变量名都被称为标识符

  • 标识符由26个英文字符

    • 大小写(az或AZ)
    • 数字(0~9)
    • 下划线(_)
    • 美元符号($)组成
  • 不能以数字开头,不能是关键字!!!

  • 标识符大小写敏感!!!

关键字

  • Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。
  • Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等
  • 关键字不能用作变量名、方法名、类名、包名和参数
  • Java关键字共53个
    • Java还有3个保留字:true、false、null。它们不是关键字,而是文字。
    • 包含Java定义的值。和关键字一样,它们也不可以作为标识符使用。

image-20231101183512332

JAVA数据类型

  • JAVA是强数据数型,必须先定义才能使用!!!
  • byte(1个字节,8位),short(2个字节,16位),int(4个字节,32位)
  • long(8个字节,64位),float(4个字节,32位)
  • double(8个字节,64位),boolean(1位),char(2个字节)

image-20231103112635320

基本类型

  • 注意:对应的类型,比如接上对应的值 ,比如:int age = “无涯”,无涯是字符串,这样就会报错!!!

整型–int

  • int age = 40

双精度–double

  • double height = 1.75

字符串–String

  • 在Java中,一般约定字符串使用双引号来表示,字符使用单引号来表示
    • String name = “志超”
    • char sex = ‘男’

布尔值–bloolean

  • 布尔值 true或false,且只能小写
public class HelloWorld {


    public static void main(String[] args) {
            // 整数
            int age= 40;

            // 双精度  占8个字节
            double height = 3.145654890123456789;

            // 字符串
            String name = "无涯";

            // char 字符存放单个中文或英文,且只能用单引号 占2个字节
            char sex = '男';

            // 占4个字节
            float num = 3.1234567F;

            // 布尔值  true或false,且只能小写
            boolean flag=true;
            System.out.println(age);
            System.out.println(height);
            System.out.println(name);
            System.out.println(sex);
            System.out.println(num);
            System.out.println(flag);
    }
}

引用类型

数组

创建数组

Java语言使用new操作符来创建数组,语法如下:

arrayRefVar = new dataType[arraySize]; //arraySize指数组长度

上面的语法语句做了两件事:

    1. 使用 dataType[arraySize] 创建了一个数组
    1. 把新创建的数组的引用赋值给变量 arrayRefVar
dataType[] arrayRefVar = {value0, value1, ..., valuek};

类型转换

  • java是强类型语言,在运算过程中需要进行类型转换
  • 运算中,不同类型数据先转化同一类型,再进行计算

低------------------------------>高

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

  • 强制类型转换

    • 由高到低, 必须进行转换
    • 语法:(类型)值,如(byte)num
    public class HelloWorld {
    
    
        public static void main(String[] args) {
                // 定义整型
                int num=100;
                // 将整型的值直接复制给byte类型是不可以,需要进行转换
                //byte a= num; 错误写法
                byte a=(byte)num;  
                System.out.println(num);
                System.out.println(a);
        }
    }
    
  • 自动类型转换

    • 由低到高
public class HelloWorld {


    public static void main(String[] args) {
            // 定义整型
            int num=100;
            // double是小数,所以有尾数
            double a=num;
            System.out.println(num);
            System.out.println(a);
    }
}

注意

  1. 不能对布尔值进行转换
  2. 不能把对象转换为不不相干的类型
  3. 转换的时候可能存在内存溢出问题
  4. 高转低时,需要强制转,反之不需要

变量

  • 变量是什么?是可以变化的量!!!
  • JAVA是强类型语言,每个变量都必须声明类型
  • 要素包括:变量名、变量类型、作用域
  • 不建议一行定义同类型多个值!!!如:int a,b,c

作用域

image-20231103145348996

类变量

  • 类变量,可以直接进行调用,不需要进行实例化
  • 语法: static 类型 变量名
  • 学习过程中,变量都加上static方便调用

image-20231103144043678

实例变量

  • 实例变量从属于对象,所以使用前必须要进行实例化对象才可以进行调用
  • 实例变量,从属于对象,即需要实例化对像Demo8这个类之后才能调用
  • 实例变量没有定义值,会变成这个默认值
    • int默认值: 0
    • String默认值: null
    • 布尔值默认: false

image-20231103144509398

局部变量

image-20231103141630216

常量

  • 初始化后不能变化的值,不会变动的值
  • 常量是一种特殊的变量,它的值被设定后,在程序后续运行过程中不允许被改变
  • 常量一般用大写!!!
  • 语法
    • final double 变量名 = 值

image-20231103151636025

变量规范

  • 变量、方法、类名遵循: 见名其义,就是一看到就知道大概啥意思

  • 不使建议使用拼音或中文当做变量名:name mingzi(错误)

  • 类名: 首字母大写和驼峰原则: Hello,HelloWorld

  • 类成员变量: 首字母小写和驼峰原则: firstDay

  • 局部变量:首字母小写和驼峰原则 firstName

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

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

运算符

  • 表格中的实例假设整数变量A的值为10,变量B的值为20

加减乘除

  • 加号另外的一个作用是:连接作用
操作符描述例子
+加法 - 相加运算符两侧的值A + B 等于 30
-减法 - 左操作数减去右操作数A – B 等于 -10
*乘法 - 相乘操作符两侧的值A * B等于200
/除法 - 左操作数除以右操作数B / A等于2
取余 - 左操作数除以右操作数的余数B%A等于0
  • 算术运算符

image-20231103180418268

  • 赋值运算符

image-20231103170530128

  • 关系运算符

image-20231103171655682

  • 逻辑运算符

下表列出了逻辑运算符的基本运算,假设布尔变量A为真,变量B为假, 必须同类型才能进行计算

操作符描述例子
&&称为逻辑与运算符。当且仅当两个操作数都为真,条件才为真。(A && B)为假。
| |称为逻辑或操作符。如果任何两个操作数任何一个为真,条件为真。(A | | B)为真。
称为逻辑非运算符。用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false。!(A && B)为真。

image-20231103175939079

自增/自减

  • 代码调式的方法,可以看出代码运行过程
  • –的过运算过程和++一致

image-20231105101311328

image-20231106093730162

image-20231106094450708

赋值运算符

操作符描述例子
=简单的赋值运算符,将右操作数的值赋给左侧操作数C = A + B将把A + B得到的值赋给C
+ =加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数C + = A等价于C = C + A
- =减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数C - = A等价于C = C - A
* =乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数C * = A等价于C = C * A
/ =除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数C / = A,C 与 A 同类型时等价于 C = C / A

image-20231105113820623

运算符优先级

  • 当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题
  • 在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大

image-20231106115420209

类别操作符关联性
后缀() [] . (点操作符)左到右
一元expr++ expr–从左到右
一元++expr --expr + - ~ !从右到左
乘性* /%左到右
加性+ -左到右
移位>> >>> <<左到右
关系> >= < <=左到右
相等== !=左到右
按位与左到右
按位异或^左到右
按位或|左到右
逻辑与&&左到右
逻辑或| |左到右
条件?:从右到左
赋值= + = - = * = / =%= >> = << =&= ^ = | =从右到左
逗号左到右

包机制

  • 包名不是凭空定义,一般利用公司域名倒置作为包名

条件语句

if

image-20231107170855992

if…else

image-20231107171245362

if…else if …else

if 语句后面可以跟 else if…else 语句,这种语句可以检测到多种可能的情况。

使用 if,else if,else 语句的时候,需要注意下面几点:

  • if 语句至多有 1 个 else 语句,else 语句在所有的 else if 语句之后。
  • if 语句可以有若干个 else if 语句,它们必须在 else 语句之前。
  • 一旦其中一个 else if 语句检测为 true,其他的 else if 以及 else 语句都将跳过执行。

image-20231107174248348

循环语句

while

  • 语法规则及说明:只要布尔表达式为 true,循环就会一直执行下去。
  • while后面要带括号----->()
while( 布尔表达式 ) {
  //循环内容
}
  • 条件满足时运行,直接到满足时跳出循环

image-20231107152016476

  • 如果条件一开始就不满足就完全不会运行代码

image-20231107152423610

do…while

  • 对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次

  • do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

image-20231107152948909

注意:

  • 布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。
  • 如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false。
  • while后面要带分号----->;

for循环

  • 注意括号内要有分号隔开,最后更新不需要分号
for(初始化; 布尔表达式; 更新) {
    //代码语句
}

image-20231107155648527

break

  • 跳出整个循环,继续下面的代码运行

image-20231107161740628

continue

  • 跳出当前循环,继续下一次循环

image-20231107165950824

方法

方法的优点

  • 使程序变得更简短而清晰, 有利于程序维护,
  • 可以提高程序开发的效率
  • 提高了代码的重用性

方法定义

image-20231204113407307

  • **修饰符:**修饰符为可选,定义了该方法的访问类型。
  • 返回值类型 :
    • 方法定义了返回值类型,则必须带return
    • 如果没有返回值,即void,则不需要带return
  • **方法名:**是方法的实际名称。方法名和参数表共同构成方法签名。
  • 参数:
    • 定义参数,该参数称之为:形参
    • 方法被调用时,传递值给参数, 这个值被称为实参
  • **方法体:**方法体包含具体的语句,定义该方法的功能

image-20231211140304302

方法调用

  • 当方法返回一个值的时候,方法调用通常被当做一个值(因为方法有返回值,需要有变量来接收)

image-20231206141546739

  • 当方法返回值是void,方法一定是一条语句

image-20231206141731492

方法重载

  • 重载是在一个类中,有相同函数名,但形参不同的函数
  • 方法重载规则:
    • 方法名必相同—强制
    • 参数列表不同(个数不同或类型不同,参数排列顺序不同)—强制
    • 方法返回值可相同也可以不同
    • 仅仅返回类型不同不足以成为方法的重载
  • 方法相同时,编译器会根据调用方法的参数个数去匹配正确的方法。如果匹配失败则编译器报错

image-20231206151234891

不定长传参

  • 就是不知道要传入多少个参数(可能没有,可能是1个或者多个),这个时候就要用到不定长传参
  • 不定长要写在参数列表最后面

image-20231211143117396

构造方法

文章来源:https://blog.csdn.net/laozhu_Python/article/details/135284132
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。