面向对象前置(java)

news2024/11/16 23:37:41

文章目录

  • 环境配置相关
    • 如何在 cmd 任何路径下中 使用 javac(编译) 和 java(运行) 指令
    • path变量的含义
    • javac(编译)使用
    • java(运行)的使用
    • public class 和 class 的区别
  • 标识符
    • 命名规则
    • 命名规范
  • 字面量
  • 字符串拼接
  • 变量的作用域
  • 转移字符
  • 类型转换
  • 接收用户键盘输入
  • switch 注意事项
    • java12 新特性
    • 方法
  • 方法重载(静态多态)
  • 递归

前言

没有 while for 等语法,主要是自己认为得到一些需要注意的地方,方便复习

环境配置相关

官网下载的 jdk 中有如下东西
在这里插入图片描述

这里有两个重要文件夹
bin:里面存放的是 命令:javac java 等命令
lib:里面放的是类库,java源码也放在里面



如何在 cmd 任何路径下中 使用 javac(编译) 和 java(运行) 指令

第一步:编辑系统变量中的 path 变量
在这里插入图片描述


第二步:在系统变量中编辑,添加 bin 路径(就是你下载的 jdk 的 bin 文件夹路径)
在这里插入图片描述


path变量的含义

Dos 命令窗口输入 Dos 命令,会先从当前路径下找个命令,如果则回去环境变量 path 路径中查找该命令,找到就执行,找不到就报错,也就是说 path 是给 windows 操作系统指路的


javac(编译)使用

  • javac + java 源文件的相对路径
  • javac + java 源文件的绝对路径

绝对路径

从盘符开始的路径就是绝对路径
例如:
C:\Users\MangFu\Desktop\note\Java\code2\hello.java

相对路径

从当前路径下面找
例如

在这里插入图片描述
code2 文件夹里的 hello.java 是相对于 命令行路径下的,也就是命令行整个路径,里有一个 code2 文件夹 code2 文件夹里面有 hello.java 文件,这个路径是相对于命令行这个路径的


java(运行)的使用

javac 之后会产生一个 class 文件,然后我们用 java 命令运行这个 class 文件。要注意命令行的路径要在有 class 文件的路径,也就是说 你 class 文件在哪个路径,你就得在哪个路径下运行 class 文件

为什么

java 命令,执行后,先启动 JVM,JVM启动 类加载器,类加载器从当前路径下寻找 class 文件,找不到就报错

如何解决

在系统环境变量中,新建一个 classpath,然后设置一个路径,如果新建好了,就会从这个路径找 class 文件,当然配置后,只能从这个路径找 class 文件了。所以我们一般在路径前面多加一个 . 表示先从当前路径找,找不到才去 classpath路径找
在这里插入图片描述


public class 和 class 的区别

  • 一个 java 源文件可以定义多个 class ,编译后,一个 class 就对对应生成一个 class 字节码文件

  • 如果一个类是 public 的,类名必须和源文件名一致,public 类可以没有,如果有只能有一个

  • 每个类都可以编写 入口 main 方法,用 java 可以运行不用的 class 字节码文件



标识符

标识符就是给变量,方法,类,包等命名的字符序列


命名规则

  • 标识符可以由字母,数字,下划线(__),美元符号组成($),不能含有其他符号
  • 标识符不能以数字开头
  • 标识符不能是 Java 中的关键字,如 public class 等
  • 标识符区分大小写

命名规范

  • 见名知意
  • 驼峰式命名
  • 类名,接口名,枚举,注解:首字母大写,后面每个单词首字母大写(StudentService, UserSeriver)
  • 变量名和方法名:首字母小写,后面每个单词首字母大写(doSome, doOther)
  • 常量名:全部大写,每个单词用下划线链接(LOGIN_SUCCESS,)
  • 包名:全部小写


字面量

字面量指的是在程序中直接使用的数据,字面量是 Java 中最基本的表达式,不需要进行计算或转换,直接使用即可

例如

//整形字面量
10, -100

//浮点型字面量
3.14159, 2.1

//布尔型字面量
true false

//字符型字面量
'a' 'b'

//字符串型字面量
"ab", "a"



字符串拼接

+ 号两边只要有一边是字符串,一定会做字符串的拼接操作,并且拼接完之后的结果还是一个字符串

public class Main {
    public static void main(String[] args) {
        System.out.println(10 + "10");//1010
        
        //从前往后算:先 10 + 20 = 30 再和 30 拼接
        System.out.println(10 + 20 + "30");//3030
        
        //这里:10 和 20拼接返回字符串,继续和 30 拼接返回字符串
        System.out.println("10" + 20 + 30);//102030
    }
}



变量的作用域

简单来说就是出了{}就不认识了


局部变量:在方法体中定义的变量,一定是局部变量,只在当前方法体中有效
局部变量必须手动赋值

成员变量:在类体重定义的变量
成员变量系统会自动赋值

在这里插入图片描述




转移字符

\t :制表符,按下 tab
\n: 换行
\ ":表示双引号
\ ':表示单引号
\ \ :表示反斜杠 \

public class Main {
    public static void main(String[] args) {
    	//输出 \
        System.out.println("\\");
        //输出 "
        System.out.println("\"");
    }
}



类型转换


(byte short) 和 char 不能互相转换

short a = 10;
char b = a; //报错

byte,short,char三者计算时首先转换为int

byte b1 = 1;
byte b2 = 1;
short s1  = 1;

//int 存不进 short
short s2 = b1 + s1; //错 b2 + s1 -> int

byte b3 = b1 + b2; //错 b2 + b3 -> int 

short s1 =  s1 + 1; // 错 s1 + 1 -> int

多种类型数据混合运算,系统自动转换成两个的容量中最大的那种数据类型进行计算
在这里插入图片描述

//这里提升成了 long 装不进 a
int a = 1 + 1L 报错 //错 按照 1L的long 存 int 存不下

char short byte 可以保存int 的常量,但不能保存int 的变量

char a = 'a' + 1; //对
short b = 1 + 1; //对

//错
int a = 10;char a = 10;

前后置递增会底层会强制转换

char a = 1;
a++; //可以过




接收用户键盘输入

在这里插入图片描述




switch 注意事项

switch (expression)

  • expression:表达式执行完是一个值,int ,枚举,字符串

  • 也可以把 byte char short 放进去进行自动类型转换

  • case 语句中必须是字面量,不能是变量

  • 值必须和 switch 后面的值同一个类型,或者能互相转换

java12 新特性

public class Main {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        switch (num) {
            case 1 -> System.out.println("你好");
            case 2 -> System.out.println("我不好");
            case 3 -> System.out.println("我不是很好");
            default -> System.out.println("fuck u");
        }

    }
}
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        switch (num) {
            case 1, 2, 3 -> System.out.println("你好");
        }
    }
}
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        switch (num) {
            case 1, 2, 3 -> {
                System.out.println("fuck u");
                System.out.println("丢雷");
            }
        }
    }
}



循环(break, continue)中的标记:类似 goto

break
标记名字随便起

public class Main {
    public static void main(String[] args) {
        
        for1:for (int i = 0; i < 2; i++) {
            for2:for (int j = 0; j <= 5; j++) {
                if (j == 5) {
                    //这里符合条件就终止 for1 那个循环
                    break for1;
                }
                System.out.println(j);
            }
        }
      
      
    }
}

continue

public class Main {
    public static void main(String[] args) {

        for1:for (int i = 0; i < 2; i++) {
            for2:for (int j = 0; j <= 5; j++) {
                if (j == 3) {
                    //从 for1 开始继续
                    continue for1;
                }
                System.out.println(j);
            }
        }

    }
}

区分 return 和 break:return 是终止整个方法,break 终止的是循环




方法

统一编写 public static
在 c 语言里面叫函数



返回值类型,一定要和返回值类型一样,或者能够自动类型转换,或者强制类型转换

public class Main {
    public static void main(String[] args) {
        long a = add(100, 200);
        System.out.println(a);
    }

    public static int add(int a, int b) {
        return a + b;
    }
}

方法原理

方法如果只定义,不调用是不会分配内存空间。(从 java8 开始,方法的字节码指令存储在元空间 metaspace 中,元空间使用的是本地内存

方法调用的瞬间,会在JVM栈内存当中分配活动场所,此时发生压栈动作


方法执行结束,就会释放空间,就弹栈

public class Main {
    public static void main(String[] args) {
        System.out.println("main begin");
        m1();
    }
    
    public static void m1() {
        m1();
    }
    
    public static void m2() {
        m3();
    }

    public static void m3() {
        
    }

   
}

在这里插入图片描述




方法重载(静态多态)

在一个类中,如果两个方法的功能相似,建议将方法定义为同一个名字

  • 在同一个类中
  • 方法名一样
  • 形式参数列表不同(类型,顺序,个数)
    满足以上条件就构成重载
public class Main {
    public static void main(String[] args) {
        System.out.println("main begin");

    }

    public static void m1() {};
    public static void m1(String s) {};
    public static void m1(int a, int b){};
}



递归

压栈和弹栈
在这里插入图片描述

public class Main {

    public static void main(String[] args) {
        System.out.println(sum(5));

    } 

    public static int sum(int n) {
        if (n == 1) {
            return 1;
        }
        return sum(n-1) + n;
    }

}

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

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

相关文章

Adobe XD是否收费?试试这几款超值的免费软件吧!

Adobe XD是一站式的 UX/UI 设计平台&#xff0c;设计师可以使用Adobe XD完成移动应用app界面设计、网页设计、原型设计等。Adobe XD也是一款结合原型和设计&#xff0c;提供工业性能的跨平台设计产品。而Adobebe。 XD跨平台的特点得到了很好的弥补 Sketch 没有 Windows 版本的缺…

【Java基础】 线程状态转化

Java 中的线程状态转换是指线程在其生命周期中可以经历的不同状态以及这些状态之间的转换。了解线程的状态转换对于有效地管理和调试多线程应用程序非常重要。Java 提供了 Thread.State 枚举来描述线程的状态。 状态 NEW&#xff08;新建&#xff09;&#xff1a; 线程被创建&…

STemWin在Windows上仿真运行环境配置

文章目录 一、STemWin介绍二、emWin必用的2个工具2.1 PC仿真器2.2 GUIBuilder图形化设计工具三、安装VS2022四、打开emwin仿真工程五、常见的配置修改5.1 运行内存修改5.2 LCD显示屏尺寸的修改一、STemWin介绍 emWin(Embedded Wizard Graphics Library)是Segger公司开发的嵌…

深入二进制安全:全面解析Protobuf

前言 近两年&#xff0c;Protobuf结构体与Pwn结合的题目越来越多。 23年和24年Ciscn都出现了Protobuf题目&#xff0c;24年甚至还出现了2道。 与常规的Pwn题利用相比&#xff0c;只是多套了一层Protobuf的Unpack操作。 本文包含Protobuf环境安装、相关语法、编译运行以及pb…

软件工程考试题备考

文章目录 前言一、二、1.2 总结 前言 一、 B D C 类图、对象图、包图 其他系统及用户 功能需求 用例 人、硬件或其他系统可以扮演的角色7. D C 数据 原型/系统原型;瀑布 A 功能;功能需求 D 数据存储;圆形/圆角矩形;矩形 C T;T;F C C B C D C …

2024年应用科学、航天航空与核科学国际学术会议(ICASANS 2024)

2024年应用科学、航天航空与核科学国际学术会议&#xff08;ICASANS 2024&#xff09; 2024 International Academic Conference on Applied Science, Aerospace and Nuclear Science&#xff08;ICASANS 2024&#xff09; 会议简介&#xff1a; 在科技日新月异的今天&#xf…

xcode报错合集,你都遇到过哪些跳不过的坑

1.报错Consecutive declarations on a line must be separated by ; 其实我这里是用因为创建了一个结构体&#xff0c;然后在没有使用State的情况下&#xff0c;修改它的属性了 当然加上State依然报错&#xff1a; 应该在UI事件中修改&#xff1a;

Go 1.19.4 字符串-Day 06

1. 编码表 计算机中只有数字&#xff08;0和1&#xff09;&#xff0c;如果有一个字符串&#xff08;字符串由字符组成&#xff09;要存储&#xff0c;在内存中该如何表达这个字符串&#xff1f; 那么所有的字符都必须数字化&#xff0c;也就是一个字符对应一个特定的数字&…

龙虎斗(2018)c++

题目描述 输入 输出 样例输入&#xff0c;输出 输入 #1 输出 #1 6 2 2 3 2 3 2 3 4 6 5 2 输入 #2 输出 #2 6 …

Shopee菲律宾本土店允许中途无理由退货,如何应对退货后库存混乱问题?

Shopee菲律宾本土店最近实施了一项新政策&#xff0c;自2024年6月10日起&#xff0c;允许买家在商品仍在运输途中申请退货与退款&#xff0c;此即“在途退货/退款”功能&#xff0c;主要的目的是为了提升买家的购物体验&#xff0c;增强市场竞争力。 图源&#xff1a;Shopee菲律…

使用vue组件的执行顺序

使用vue组件的执行顺序 public中index.html是整个应用的入口文件&#xff0c;当需要把app容器挂载页面上时&#xff0c;按照递归的方式找到app&#xff0c;也就是vue的入口文件&#xff0c;main.js;当找到设计其他子组件定义的内容时&#xff0c;会递归的找到其他子组件。 在子…

七款上网行为管理系统推荐|上网管理系统高能推荐

电脑监控审计软件&#xff0c;听起来可能有些高冷、专业&#xff0c;但它们其实就是守护你电脑的小精灵&#xff01;这些软件工具可是专门设计来监控和记录你的电脑使用情况&#xff0c;无论你是企业里的辛勤员工&#xff0c;还是学校里的学霸小伙伴&#xff0c;都能找到它们的…

Agentic RAG 与图任务编排

一个朴素的 RAG 系统流程是这样的&#xff1a;先由用户提出问题&#xff0c;然后系统基于用户提问进行召回&#xff0c;对召回结果进行重排序&#xff0c;最后拼接提示词后送给 LLM 生成答案。 一部分简单场景下&#xff0c;朴素的 RAG 已经可以满足用户意图明确的场景的要求&a…

柒拾肆- 如何通过数据影响决策(五)- 时序数据

什么是好&#xff1f; 对于 单一时序指标 来说&#xff08;如最简单的 销售、日活顾客数、订单数 等 &#xff09;&#xff0c;在决策时该怎样 看 呢&#xff1f; 或者换句话说&#xff0c;数据 应该怎样 表达 才能让决策者做出 更全面 的决策呢&#xff1f; 一、目前的方式 …

Jenkins+K8s实现持续集成(二)

部署前呢&#xff0c;要先把jenkins搭建好。 同时呢已经有了k8s的环境。 基于以上两步已经有了的情况&#xff0c;继续要实现jenkinsk8s持续集成&#xff0c;需要先准备四个文件&#xff1a; Dockerfile首先要准备好一个Dockerfile文件&#xff0c;用于构建Docker镜像的文本…

广州回顾 | 打破Oracle与IvorySQL之间的壁垒,听听IvorySQL企业级应用

6月15日&#xff0c;IvorySQL 社区携手中国开源软件联盟 PostgreSQL 分会首次走进广州并成立 IvorySQL 广州用户组&#xff0c;非常感谢 PG分会 筹办了此次线下交流活动&#xff0c;这也让 IvorySQL 社区有机会在线下与广州的小伙伴们一起见面聊聊天。 与一群志同道合的人相聚&…

c#音乐播放器续(联网下载)

音乐播放器 0.前言1.关于本地音乐播放2.使用iTunes Search API进行联网下载歌曲2.1 控件2.2 函数实现2.2.1 控件2&#xff1a;搜索歌曲2.2.2 控件3&#xff1a;下载歌曲 2.3 主界面 3.拓展 0.前言 书接上文&#xff0c;我们已经实现了一个能够播放本地音乐的音乐播放器&#x…

kubernetes 核心概念

1 kubernetes核心概念 1.1 Pod Pod是可以在Kubernetes中创建和管理的、最小的可部署的计算单元。 Pod就像豌豆荚一样&#xff0c;其中包含着一组&#xff08;一个或多个&#xff09;容器&#xff1b;这些容器共享存储、网络、以及怎样运行这些容器的声明。 Pod就像一台物理…

用c语言实现通讯录

目录 静态简易通讯录 代码&#xff1a; 功能模块展示&#xff1a; 设计思路&#xff1a; 动态简易通讯录&#xff08;本质顺序表&#xff09; 代码&#xff1a; 扩容模块展示&#xff1a; 设计思路&#xff1a; 文件版本通讯录 代码&#xff1a; 文件模块展示&#x…

运维篇-配置高级

黑马程序员Spring Boot2 文章目录 1、临时属性1.1 命令行中使用临属性1.2 开发环境设定临时属性 2、配置文件分类3、自定义配置文件 1、临时属性 1.1 命令行中使用临属性 使用jar命令启动Sprigboot工程师可以使用临时属性替换配置文件中的属性临时属性添加方式&#xff1a;ja…