Java基础之冒泡排序、二分查找、封装

Java基础

1.冒泡排序

public static void main(String[] args) {/*TODO 定义数组的 冒泡排序*/int[] intAr = {3, 2, 1, 5, 6, 4, 2, 1, 8};bubbleSort(intAr);System.out.println(getArrStr(intAr));
}public static int[] bubbleSort(int[] intArr) {/*冒泡排序:对相邻两个数据进行比较,将较小的数据前置,较大的数据后置,之后再去拿下一个数据进行比较第一层 2,1,3,5,6,4,2,1,8第二层 2,1,3,5,6,4,2,1,8① 3 v 2 => 2 3① 3 v 1 => 1 3*/for (int i = 0; i < intArr.length - 1; i++) {for (int j = 0; j < intArr.length - i - 1; j++) {if (intArr[j] > intArr[j + 1]) {int tmp = intArr[j + 1];intArr[j + 1] = intArr[j];intArr[j] = tmp;}}}return intArr;
}

2.二分查找

public static void main(String[] args) {/*TODO 定义数组的 二分查找*/int[] intAr = {3, 2, 1, 5, 6, 4, 2, 1, 8};int index = binarySearch(intAr, 0);System.out.println("获取到下标:"+index);}/*二分查找:给定一个具体的数据,通过二分的方式在int类型的数组中进行遍历数据,如果遍历到,那么返回其下标如果没有遍历到则返回 -1[1, 1, 2, 2, 3, 4, 5, 6, 8]对于二分查找必须要求其数组为有序数组① 先确定 开始下标 和结束下标② 通过开始下标和结束下标确定 中间mid下标 通过mid 获取对应下标的值③ 通过下标值和目标值进行比较1.如果相同则返回mid下标,程序结束2.如果当mid 小于 目标值那么需要将 开始下标设置为 mid + 1 再进行一轮比较3.如果当mid 大于 目标值那么需要将 结束下标设置为 mid - 1 再进行一轮比较注意:mid = 开始下标 + 结束下标 / 2 取整*/
public static int binarySearch(int[] intArr, int search) {int startIndex = 0;int endIndex = intArr.length - 1;while (startIndex <= endIndex) {int mid = (startIndex + endIndex) / 2;if (intArr[mid] == search) {return mid;}else if (intArr[mid] < search){startIndex = mid + 1;}else {endIndex = mid - 1;}}return -1;
}

3. class(类)

 public static void main(String[] args) {/*在Java中使用class 修饰的成为类,如果当类中存在有main方法时,成为操作类或程序入口类*/Person person = new Person(); //通过类可以获取到其对象person.name = "许康杰";person.age = 20;System.out.println(person.name);  // 通过对象.属性 可以获取到属性值System.out.println(person.age);  // 通过对象.属性 可以获取到属性值System.out.println(person.eat("金针菇")); // 对于成员方法可以直接通过对象进行调用person.play();Person person2 = new Person(); //通过类可以获取到其对象person2.name = "李国涛";person2.age = 18;System.out.println(person2.name);  // 通过对象.属性 可以获取到属性值System.out.println(person2.age);  // 通过对象.属性 可以获取到属性值Person person3 = person2; // 使用的是同一个内存地址中的数据System.out.println(person3.name);  // 通过对象.属性 可以获取到属性值System.out.println(person3.age);  // 通过对象.属性 可以获取到属性值useVar();}public static void useVar(){// 当{}中代码执行完成后,当前{}中所有变量都失效,会在特定时期被 垃圾回收器回收{int var = 10;
//            int var ;  对于局部变量来说,需要先定义赋值 后使用System.out.println(var);}}Person类:public class Person {/*TODO 人类:属性:姓名 年龄 身高 体重 性别方法:吃 喝 玩 学习注意:1.类中的属性称为成员变量,定义在类中方法外2.对于成员变量,在定义时,可以不用给定其初始值,在构建对象时,会根据变量的类型初始化引用类型 (String) => null基本数据类型 (byte short int long) => 0(float double) => 0.0(char boolean) => ?3.类中的成员方法,在定义时,不能使用static修饰*/String name;int age;double high;double weight;String gender;public String eat(String food){System.out.println(food+"被消化了一部分");return "消化过的食物";}public void drink(String drink){System.out.println("人类可以喝饮料...");}public void play(){System.out.println("人类可以玩游戏...");}}

4.参数传递

public static void main(String[] args) {/*在Java中使用class 修饰的成为类,如果当类中存在有main方法时,成为操作类或程序入口类*/Person person = new Person(); //通过类可以获取到其对象person.name = "易政";//将引用类型变量person作为参数传递给usePerson(),以此实现了person对象中属性值的变化usePerson(person);System.out.println(person.name); // 汪雨System.out.println(person.age); // 18/*TODO 匿名对象:当对象在方法中有且只使用一次的场景前后两次System.out.println(inPerson);所输出的值不同*/usePerson(new Person());}public static void usePerson(Person inPerson) {System.out.println(inPerson);inPerson.name = "汪雨";inPerson.age = 18;
}

5.封装

 public static void main(String[] args) {Student student = new Student();/*TODO 封装概述是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。private 修饰成员(成员变量和成员方法) 对当前的变量或方法私有化一旦修饰后,仅只能在当前的类中使用当在setAge中使用参数名和属性名称相同时,赋值失败,原因:1.在方法中定义的参数为局部变量,仅仅在当前方法中生效,2.当参数名称和属性相同时,根据就近原则,选择当前方法内的局部变量进行调用this => 指代当前的对象 this.可以使用属性或方法*/student.setName("李四");student.setAge(18);student.setGender("不知道");student.printInfo(); // 方法可以被调用 因为该方法为public 而其中的属性虽然为私有但是,在当前对象类内调用的// 通过封装的方法可以对其中属性值进行获取System.out.println(student.getName());System.out.println(student.getAge());Phone phone = new Phone();phone.setNumber("183****8888");phone.setUser("王五");System.out.println(phone.getUser());System.out.println(phone.getNumber());}Student类:public class Student {private String name;private int age;private String gender;public void setName(String inName) {name = inName;}public void setAge(int age) {this.age = age;}public void setGender(String inGender) {if (inGender.equals("男") || inGender.equals("女")){gender = inGender;}else {System.out.println("性别只能为男或女,您输入的信息不正确...");}}public int getAge() {return age;}public String getName() {return name;}public String getGender() {return gender;}public void printInfo() {System.out.println("我叫:" + name + " 今年:" + age + " 性别是:" + gender);}}

6.构造方法

 public static void main(String[] args) {/*TODO 构造方法1. new Phone(); 是使用 new 关键字 + 类名 + ()  => Java的方法中有() 表示 方法的调用2. 在定义类时,会默认给定一个当前类的无参构造方法构造方法 作用是返回一个 当前类的一个对象 所以不需要指定其返回值类型注意:1.构造方法的格式 修饰符 类名(参数) {可以编写构造方法体}2.对于显示定义构造方法,默认会覆盖无参构造*/Phone phone = new Phone();phone.setNumber("183****8888");phone.setUser("陆玉龙");System.out.println(phone.getUser());System.out.println(phone.getNumber());Phone phone2 = new Phone("袁枫", "166****6666");System.out.println(phone2.getUser());System.out.println(phone2.getNumber());Phone phone3 = new Phone("汪雨");System.out.println(phone3.getUser());System.out.println(phone3.getNumber());// 对象调用方法phone2.call("188****8888");Phone phone4 = new Phone("袁枫女朋友", "188****8888");phone2.call(phone4);//非static的方法无法通过直接使用其方法名来调用该方法//usePhone(phone2);//以引用类型变量来作为传递参数useStaticPhone(phone2);}public void usePhone(Phone phone){System.out.println("手机号:"+phone.getNumber()+"正在被使用...");}public static void useStaticPhone(Phone phone){System.out.println( "Demo05中的代码:"+"手机号:"+phone.getNumber()+"正在被使用...");}phone类:public class Phone {// public 表示公开的public Phone() {System.out.println("这是Phone的构造方法...");}/*有参构造方法*/public Phone(String user, String number) {this.user = user;this.number = number;System.out.println("这是两个参数的Phone的构造方法...");}/*TODO 构造方法内部调用其他构造方法注意: 在当前类中构造方法调用需要使用 this([参数]) 进行调用同时,this([参数]) 需要放在当前构造方法的第一行*/public Phone(String user) {this(user, "111****0000");System.out.println("这是1个参数的Phone的构造方法...");
//        this.user = user;
//        this.number = "111****0000";}private String user;private String number;public String getUser() {return user;}public void setUser(String user) {this.user = user;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public void call(String number) {System.out.println(this.number + "正在打电话给" + number);}//以引用类型变量来作为传递参数public void call(Phone phone) {System.out.println(this.user + "\t" + this.number + "正在打电话给" + phone.user + "\t" + phone.number);}public void show(){System.out.println("当前用户为:"+user+"其手机号码为:"+number);}}

7.成员方法

public class Demo06UseObjectFunction {public static void main(String[] args) {/*TODO 成员方法定义:属于对象的,在类中定义,格式为:修饰符 返回值类型 方法名(参数列表) {方法体}调用:成员方法的调用,必须要通过对象进行静态方法是属于类的,其调用方式:1.如果在当前类中的static方法中使用 可以直接通过方法名调用2.如果在其他类中的静态方法内调用,可以通过类名.方法名调用3.对于对象也可以调用类中的静态方法,但是不合规注意:1. 静态方法内部,只能调用静态方法,或者通过其对象调用成员方法*/Phone phone2 = new Phone("袁枫", "166****6666");System.out.println(phone2.getUser());System.out.println(phone2.getNumber());//        usePhone(phone2); //不能使用//创建本类对象Demo06UseObjectFunction demo06UseObjectFunction = new Demo06UseObjectFunction();//通过本类对象调用其成员方法usePhone()demo06UseObjectFunction.usePhone(phone2);useStaticPhone(phone2);  // 静态方法,可以直接被调用Demo05GetObject.useStaticPhone(phone2);//可以调用类中的静态方法,但是不合规demo06UseObjectFunction.useStaticPhone(phone2);phone2.show();}public void usePhone(Phone phone){System.out.println("手机号:"+phone.getNumber()+"正在被使用...");
//        useStaticPhone(phone);  // 成员方法中可以直接调用类中的静态方法}// static 修饰的成为静态方法public static void useStaticPhone(Phone phone){
//        usePhone(phone);  // 不可以System.out.println("Demo06中的代码:"+"手机号:"+phone.getNumber()+"正在被使用...");}}

8. static

package com.shujia.Day04_packaging;public class Demo07StaticVar {static int value;static int data = 20;int var = 1;public static void main(String[] args) {/*TODO static 修饰成员变量1. 提供了一种全局的方式,可以在多个静态方法中进行调用变量2. 对于成员变量只能在成员方法中使用,不能在静态方法中使用3. 对于成员方法中,可以使用静态变量4. 对于成员变量使用static修饰,那么该变量为静态变量 -> 属于类的 -> 是所有对象共有的 ->内存中的存储位置是在方法区(元空间中) -> jdk7之后存在堆空间中  -> 在全局有且仅有一个*/Demo07StaticVar.value = 10;System.out.println(value);System.out.println(data);useVar();//        var = 10;
//        Demo07StaticVar demo07StaticVar = new Demo07StaticVar();
//        demo07StaticVar.objectVar();//匿名对象new Demo07StaticVar().objectVar();Per per1 = new Per("张三", "美国");per1.show();Per per2 = new Per("李四", "中国");per2.show();// 现象 :由于nationality属性为static,// 第二次创建Per对象时输入的nationality"中国"覆盖了第一次输入的张三的nationality"美国"per1.show();  }public static void useVar() {//静态方法中无法使用非静态方法中定义的变量
//        var = 10;System.out.println("获取到Value:" + value);System.out.println("获取到data:" + data);}public void objectVar() {var = 10;data = 30;System.out.println("当前data:" + data);System.out.println("当前var:" + var);}}Per类:public class Per {String name;static String nationality;// alt + insert 按键  快捷方式(快速创建get、set方法)// select Nonepublic Per() {}public Per(String name, String nationality) {this.name = name;this.nationality = nationality;}public void show() {System.out.println("姓名:" + name + "\t" + "国籍:" + nationality);}
}

9. main方法

public class Demo08Main {public static void main(String[] args) {// String[] args => 是一个字符串数组/*String[] args 表示在程序运行时传入的一些参数类似于  mysql -uroot -p123456参数之间使用空格隔开*/int length = args.length;System.out.println(length);if (length > 0){for (String arg : args) {System.out.println("argument:"+arg);}}}
}public class Demo08UseMain {public static void main(String[] args) {String[] arguments = {"1","2"};/*main方法是属于类的 就可以使用类.main进行调用*/Demo08Main.main(arguments);}
}

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

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

相关文章

什么是Java中的异常处理机制?

Java中的异常处理机制是一种用于处理运行时错误的强大系统&#xff0c;它允许程序在遇到意外情况时能够优雅地恢复。异常处理是Java语言的一个重要特性&#xff0c;它提供了一种结构化的方法来处理错误条件&#xff0c;而不是让程序崩溃或产生不可预期的行为。 **异常的基本概…

云安全与网络安全:有什么区别?

云计算已经存在了一段时间&#xff0c;但某些术语的正确含义仍然存在混乱。一个例子是区分云安全与网络安全。 首先&#xff0c;让我们看一下网络安全一词 &#xff0c;以了解它的含义。然后&#xff0c;我们将将该术语与云安全进行比较&#xff0c;以了解两者在几个关键领域的…

nginx-ingress详解

一、ingress概述 1、概述 Kubernetes是一个拥有强大故障恢复功能的集群&#xff0c;当pod挂掉时&#xff0c;集群会重新创建一个pod出来&#xff0c;但是pod的IP也会随之发生变化&#xff0c;为了应对这种情况&#xff0c;引入了service&#xff0c;通过service的标签匹配&am…

Java项目引入log4j2

log4j2 单独使用 引入依赖 <dependencies><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-api</artifactId><version>2.14.0</version></dependency><dependency><groupId>o…

了解 Python 底层的解释器 CPython 和 Python 的对象模型

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、CPython CPython 是 Python 编程语言的官方和最广泛使用的实现。它是用 C 语言编写的&#xff0c;因此得名 “CPython”。作为 Python 生态系统的核心&#xff0c;了解 CPython 的工作原理、主要特…

前端 - 基础 表单标签 - label 标签

# label 标签 其实不属于 表单标签名单经常和 表单标签 搭配使用。 # <label> 标签 为 input 元素 定义 标注&#xff08; 标签 &#xff09; 使用场景 # 其实说白&#xff0c;<label> 标签就是为了方便用户体验的,举例说明 就是说&#xff0c;如上示&am…

如何理解数据库事务

事务的概念起源于数据库系统的设计和实现。在计算机科学领域中&#xff0c;数据库系统被广泛用于存储和管理大量的数据&#xff0c;而事务的概念则是为了解决多用户并发访问数据库时可能出现的一系列问题。 事务的概念最早由 IBM 的科学家 Edgar F. Codd 在 1970 年提出。Codd…

如何在响应头中防治xss

在HTTP响应头中设置一些特定的安全策略可以帮助防止XSS&#xff08;跨站脚本&#xff09;攻击。以下是一些常用的HTTP响应头和它们的作用&#xff1a; Content-Security-Policy&#xff1a;这个响应头可以限制浏览器只加载和执行来自特定来源的脚本。例如&#xff0c;你可以设置…

力扣爆刷第123天之回溯五连刷

力扣爆刷第123天之回溯五连刷 文章目录 力扣爆刷第123天之回溯五连刷一、77. 组合二、216. 组合总和 III三、17. 电话号码的字母组合四、39. 组合总和五、40. 组合总和 II 一、77. 组合 题目链接&#xff1a;https://leetcode.cn/problems/combinations/description/ 思路&…

数据结构——6.4 图的应用

6.4 图的应用 概念 最小生成树 对于一个带权连通无向图G ( E)&#xff0c;生成树不同&#xff0c;每棵树的权(即树中所有边上的权值之和)也可能不同。设R为G的所有生成树的集合&#xff0c;若T为R中边的权值之和最小的生成树&#xff0c;则T称为G的最小生成树 (Minimum-Spanni…

【华为OD机试】跳马【C卷|200分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格, 即先横着或者直者走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称"马走日"字。 给定 m…

如何在 Ubuntu 14.04 上更改 PHP 设置

简介 PHP 是一种服务器端脚本语言&#xff0c;被许多流行的 CMS 和博客平台如 WordPress 和 Drupal 所使用。它也是流行的 LAMP 和 LEMP 堆栈的一部分。更新 PHP 配置设置是设置基于 PHP 的网站时的常见任务。定位确切的 PHP 配置文件可能并不容易。通常在服务器上会有多个 PH…

弹性盒子(display: flex)布局

以下文章都可以参考 CSS - 完美解决 flex 布局下&#xff0c;一行显示固定个数&#xff08;平均分布&#xff09;并且强制换行&#xff0c;超出后 “靠左“ 对其&#xff08;详细解决方案&#xff0c;适用于 Web、Vue、React 等任何前端项目&#xff09;_flex设置一行几个-CSD…

linux下使用qt+mpv调用GPU硬件解码

linux下GPU硬件解码接口&#xff0c;常用的有vdpau和vaapi。 mpv是基于mplayer开发的一个播放器。此外&#xff0c;mpv还提供了函数库libmpv&#xff0c;通过使用libmpv可以编写一个简单的播放器。 基于qtlibmpv的demo&#xff0c;官方例子代码如下&#xff1a;https://github.…

Quick Service Setup(快速服务设置)

Quick Service Setup界面使用户能够使用最少的参数快速配置和编辑简单的应用程序服务。Alteon自动为虚拟服务创建所需的对象(虚拟服务器、服务器组、真实服务器、SSL策略、FastView策略等)。通过快速服务设置&#xff0c;您可以配置HTTP, HTTPS&#xff0c;基本slb(第4层TCP或U…

Python-VBA函数之旅-classmethod函数

目录 一、装饰器的定义&#xff1a; 二、装饰器类型&#xff1a; 三、装饰器的主要用途&#xff1a; 四、classmethod常用场景&#xff1a; 1、classmethod函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、相关文章&#xff1a; classmethod是 Pyth…

【运维篇#2】查看每个docker的日志量并且清除多余日志

文章目录 清除日志查看现在每个docker容器中的日志量 清除日志 #!/bin/bash echo " start clean docker containers logs " logs$(find /var/lib/docker/containers/ -name *-json.log) for log in $logsdoecho "clean logs : $log"cat /dev/null > $l…

【LeetCode热题100】【矩阵】旋转图像

题目链接&#xff1a;48. 旋转图像 - 力扣&#xff08;LeetCode&#xff09; 要将一个矩阵顺时针旋转90&#xff0c;数学公式是new[j][n-i-1]old[i][j]&#xff0c;要原地翻转的话&#xff0c;可以先水平翻转&#xff0c;即变成m[n-i-1][j]&#xff0c;再主对角线翻转&#xf…

定时器详解

定时器&#xff1a;Timer类 常用方法方法&#xff1a; 1.schedule(TimeTask timetask,long delay,(long period)): TimeTask&#xff1a;实现了Runnable类&#xff0c;实现时需要重写run方法 delay&#xff1a;表示延迟多少(decay)后开始执行任务&#xff0c;单位是毫秒&#x…

java算法day2

螺旋矩阵搜索插入位置查找元素第一个位置和最后一个位置 螺旋矩阵 解法&#xff1a;模拟&#xff0c;核心在于你怎么转&#xff0c;还有就是处理边界&#xff0c;边界如何收缩&#xff0c;什么时候停止旋转。最内圈的时候怎么处理。 通过上图的模拟来解决这个问题&#xff1a;…