JAVA基础入门自学篇

news2025/1/20 5:57:51

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

构造方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1344732.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【零基础入门VUE】VueJS - 实例

✍面向读者&#xff1a;所有人 ✍所属专栏&#xff1a;零基础入门VUE专栏https://blog.csdn.net/arthas777/category_12537076.html 目录 句法 vue_instance.js 输出 例子 输出 实施例1 实施例2 例子 例子 要开始使用 VueJS&#xff0c;我们需要创建 Vue 实例&#xf…

前言-ERP管理平台各个模块角色登录账号及各模块逻辑说明

全国职业院校技能大赛-高职组”软件测试"赛项竞赛训练ERP管理平台角色登录账号如下: “ERP 管理平台”内置一定数量 Bug,该系统可支持基于 Web 端 的功能测试、自动化测试、性能测试、接口测试、白盒测试、单元测 试等。系统主要模块包括:采购入库、采购退货、库存分…

LVS负载均衡配置虚拟引起微服务注册混乱

线上小程序突然报错&#xff0c;查看网关日志&#xff0c;访问下游微服务A时大量报错&#xff1a; 1&#xff09;检查微服务是否未注册。登录eureka页面&#xff0c;发现三个节点均正常注册 三个微服务节点地址分别为&#xff1a;13.9.1.91:8080&#xff0c;13.9.1.92:8080和1…

图像分割实战-系列教程2:Unet系列算法

图像分割实战-系列教程 总目录 语义分割与实例分割概述 Unet系列算法 1、Unet 整体结构&#xff1a;概述就是编码解码过程简单但是很实用&#xff0c;应用广起初是做医学方向&#xff0c;现在也是 语义分割与实例分割概述 Unet系列算法

EBU7140 Security and Authentication(一)常见加密算法

前言 主要根据 EBU7140 课程内容整理&#xff0c;比较偏向应试~ Block1&#xff1a;介绍课程&#xff0c;传统加密方式。 Block2&#xff1a;公钥加密的原理和应用。 Block3&#xff1a;一些特定安全协议技术&#xff08;如防火墙 Kerberos身份验证协议等&#xff09;。 B…

PLC龙门刨床横梁运动控制程序示例

一、龙门刨床横梁运动控制 二、按钮信号地址分配 三、对应的程序梯形图 1、首先按下上升按钮&#xff0c; 同时接通这两个触点&#xff08;上升之前先对横梁进行放松&#xff09; 2、当放得足够松的时候&#xff0c;放松通路断开&#xff0c;上升通路接通&#xff0c;横梁开始上…

20231229在Firefly的AIO-3399J开发板的Android11使用挖掘机的DTS配置单前后摄像头ov13850

20231229在Firefly的AIO-3399J开发板的Android11使用挖掘机的DTS配置单前后摄像头ov13850 2023/12/29 11:10 开发板&#xff1a;Firefly的AIO-3399J【RK3399】 SDK&#xff1a;rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBrick】 Android11.…

Java设计模式实战:从If-Else到策略+工厂方法的演变

引言 可能很多开发者&#xff0c;虽然理解了设计模式的概念&#xff0c;但在实际工作中应用却是另一回事。本篇文章旨在用一个具体的案例来展示如何将设计模式应用到工作的编程问题中。正所谓&#xff1a;“纸上得来终觉浅&#xff0c;绝知此事要躬行。”理论的学习固然重要&a…

Mybatis底层原理分析以及源码阅读

费话不多少先上图&#xff0c;我只喜欢画图分析&#xff0c;看图片&#xff1a; 有两个问题&#xff1a; 问题1&#xff1a; 我们一直在写Mapper/DAO只写了接口&#xff0c;没有写具体的实现吧&#xff1f; 【是的】 问题2&#xff1a; 没有写实现类就没办法实例化执行后续的操…

Windows系统清理优化方法总结

一、禁用不必要的系统服务 1、家庭组&#xff1a;家庭组是Win10磁盘&#xff0c;CPU需要高服务&#xff0c;多数用户都没有使用&#xff0c;因此建议关闭&#xff0c;不会造成其他负面影响。 快捷键 winr 调出服务输入框键入services.msc点击确定 找到家庭组相关的两个服务双…

【已解决】 ubuntu apt-get update连不上dl.google.com

在终端使用apt-get update时&#xff0c;连接dl.google.com超时&#xff0c;一直卡在0%&#xff0c;原因是当前ip无法ping到google&#xff08;墙&#xff09;。 解决方法&#xff1a; dl.google.com国内可用IP 选一个&#xff0c;然后按以下命令操作&#xff1a; cd ~ vim …

css实现一个斑马条纹动画,实现一个理发店门口的小转转,进度条动画同理!

css实现一个斑马条纹动画&#xff0c;实现一个理发店门口的小转转 前置基础知识 css背景background的重复渐变属性repeating-linear-gradient() 该属性类似于linear-gradient(),但他会在整个方向上重复渐变以覆盖整个容器 一、先写一个普通渐变例子linear-gradient() &…

【STM32】STM32学习笔记-TIM输出比较(15)

00. 目录 文章目录 00. 目录01. 输出比较简介02. PWM简介03. 输出比较通道(高级)04. 输出比较通道(通用)05. 输出比较模式06. PWM基本结构07. PWM参数计算08. 舵机简介09. 舵机硬件电路10. 直流电机及驱动简介11. 直流电机硬件电路12. 附录 01. 输出比较简介 OC&#xff08;Ou…

如何解决“电脑缺失msvcp110.dll”错误,msvcp110.dll文件解决方法

“msvcr110.dll丢失”。那么&#xff0c;msvcr110.dlll丢失到底是什么意思呢&#xff1f;它对我们的电脑有什么影响&#xff1f;本文将详细介绍msvcr110.dll的作用以及msvcr110.dll丢失对电脑的影响&#xff0c;并提供5个解决方案来解决这个问题。 一、msvcr110.dll的作用 ms…

成为一名FPGA工程师:面试题与经验分享

在现代科技领域&#xff0c;随着数字电子技术的迅猛发展&#xff0c;FPGA&#xff08;可编程逻辑器件&#xff09;工程师成为了备受瞩目的职业之一。FPGA工程师不仅需要掌握硬件设计的基本原理&#xff0c;还需要具备良好的编程能力和解决问题的实践经验。面对如此竞争激烈的行…

超简单一行命令在电脑上部署安装短视频直播、引流推流人气的工具,7个开源免费流媒体直播平台和3款开源免费直播推流工具

超简单一行命令在电脑上部署安装短视频直播、引流推流人气的工具,7个开源免费流媒体直播平台和3款开源免费直播推流工具。爆款引流短视频关注的指标、分类和引流技巧,引流短视频应用技巧,直播短视频引流五维方法论,实操干货整理分享。 如今上到太空站、下到在家养猪,各行…

编程羔手解决Maven引入多个版本的依赖包,导致包冲突了

最近升级了些依赖发现有个hutool的方法老报错&#xff0c;java.lang.NoSuchMethodError: cn.hutool.core.util.ObjectUtil.defaultIfNull(Ljava/lang/Object;Ljava/util/function/Supplier;) 在 Maven 项目中&#xff0c;当不同的依赖模块引入 Hutool 的不同版本时&#xff0c…

ubuntu20部署Bringing-Old-Photos-Back-to-Life

环境准备&#xff1a; ubuntu20.04 Python 3.8.10 首先将微软的「Bringing-Old-Photos-Back-to-Life」库 clone 到本地&#xff1a; git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git cd Face_Enhancement/models/networks/ git clone https:/…

迷宫问题的对比实验研究(代码注释详细、迷宫及路径可视化)

题目描述 对不同的迷宫进行算法问题&#xff0c;广度优先、深度优先、以及人工智能上介绍的一些算法&#xff1a;例如A*算法&#xff0c;蚁群算法等。 基本要求&#xff1a; &#xff08;1&#xff09;从文件读入9*9的迷宫&#xff0c;设置入口和出口&#xff0c;分别采用以上方…

Vscode —— 解决Vscode终端无法使用npm的命令的问题

在cmd中可以正常执行npm -v等指令,但是在vs code终端中,无法执行npm -v,node -v等指令 出现报错 解决办法&#x1f447; 方法一&#xff1a;【右键单击Vscode】以【管理员身份运行】&#xff0c;【重启Vscode】 方法二&#xff1a;①【用户变量】的【path】添加npm所在路径的…