Java常用类和对象---尚硅谷Java入门视频学习

news2024/12/27 11:18:09

1.Object

常用方法:

  • toString() 将对象转换成字符串。
    toString默认打印的就是对象的内存地址,所以,为了能够更直观理解对象的内容,可以重写这个方法

  • hashCode() 获取对象的内存地址

  • equals() 判断两个对象是否相等, 如果相等,那么返回true,否则返回false
    equals方法比较对象时,默认比较就是内存地址

  • getClass()获取对象的类型信息

Class<?> aClass = obj.getClass();
System.out.println(aClass.getSimpleName()); //类名
System.out.println(aClass.getPackageName());//包名

2.数组

  • 数组的声明方式:类型[] 变量;

  • 数组的创建:new 类型[容量];

int[] arr = new int[]{1,2,3};
String[] names = new String[3];

冒泡排序

从所有数据中找出数据的最大值,将最大值放置数组的最后;缩小查找的范围,将最大值放在最后,以此类推,完成数组的排序。
第一轮循环比较
在这里插入图片描述
在这里插入图片描述
第一轮循环,比较五个数,将五个数中最大值放在最后;
第二轮循环,比较前四个数,将四个数中最大值放在最后;

	int[] nums = {1,4,3,5,2};
        // TODO 希望获取到的数据,1,2,3,4,5
        // 简化需求:将数组中的最大值放置数组的最后
        for ( int j = 0; j < nums.length; j++ ) {
            for ( int i = 0; i < nums.length - j - 1; i++ ) {
                //每一轮 相邻的两个数
                int num1 = nums[i];
                int num2 = nums[i+1];
                if ( num1 > num2 ) {
                    // 左边的数据大于右边的数据,应该交互位置
                    nums[i] = num2;
                    nums[i+1] = num1;
                }
            }
        }

选择排序

从数组中任意选择一个数,当做数组的最大值保存其索引;与后面的数进行比较,若后面的数比这个数大,则更新最大值索引,完成一轮比较,将最大值与最后面的值进行交换。缩小查找的范围,进行比较,以此类推,完成数组的排序。
每一轮循环,只有最后一次需要交换数据。

	 int[] nums = {1,4,3,5,2};
        for ( int j = 0; j < nums.length; j++ ) {
            int maxIndex = 0;//默认第一个值最大
            for ( int i = 1; i < nums.length - j; i++ ) {
                if ( nums[i] > nums[maxIndex] ) {  //每一轮循环 从第二个数开始,与最大值比较
                    maxIndex = i;  //改变最大值索引
                }
            }
            int num1 = nums[nums.length-j-1]; //最后一个数
            int num2 = nums[maxIndex];//单次循环 最大值

            nums[maxIndex] = num1;  //交换
            nums[nums.length-j-1] = num2;
        }

3.字符串String

String name1 = "zhangsan";
String name2 = new String("zhangsan");
  • 字符数组变成字符串
char[] cs = {'a', '中', '国'};
String s = new String(cs);

//        
//
//        
//        
  • 字节数组变成字符串
byte[] bs = {-28,-72,-83,-27,-101,-67};
String s1 = new String(bs, "UTF-8");  //中国

UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。

  • 转义字符
String s = "\"";
System.out.println(s);     // "
System.out.println("\'");  // '
System.out.println("a\tb");// a	b


System.out.println("c\nd");// c  (换行)d
System.out.println("e\\f");//e\f     \\表示\本身
  • 字符串的比较
 String a = "a";
 String b = "A";
相等
  System.out.println(a.equals(b));  //false
  // 忽略大小写的相等
  System.out.println(a.equalsIgnoreCase(b)); //true
比较
 // i = 正数,a > b
 // i = 负数,a < b
 // i = 0, a = b
 int i = a.compareTo(b);
 System.out.println(i); //32     A 65  a 97
 // 忽略大小写的比较
 System.out.println(a.compareToIgnoreCase(b));  //0
  • 字符串的截取
    substring方法用于截取字符串,需要传递两个参数,
    第一个参数表示截取字符串的起始位置(索引,包含)
    第二个参数表示截取字符串的结束位置(索引,不包含)
    如果只传递一个参数,那么就表示从指定位置开始截取字符串,然后截取到最后
String s = "  Hello World";
System.out.println(s.substring(0, "Hello".length()));  //Hello

分解字符串 :根据指定的规则对字符串进行分解。可以将一个完整的字符串,分解成几个部分。

String s = "  Hello World";
String[] s1 = s.split(" ");
System.out.println(s1.length);//2
for (String s2 : s1) {
	System.out.println(s2);  //Hello (换行) World
}

trim() : 去掉字符串的首尾空格

  • 字符串的替换
String s = "Hello World zhangsan"; 
// 替换
System.out.println(s.replace("World zhangsan", "Java"));  // Hello Java
// replaceAll按照指定的规则进行替换
System.out.println(s.replaceAll("World|zhangsan", "Java"));// Hello Java Java 将World或者zhangsan替换成Java
  • 字符串的大小写转换
String s = "Hello World";
System.out.println(s.toLowerCase());  //hello world
System.out.println(s.toUpperCase());  //HELLO WORLD
  • 字符串的查找
 String s = "Hello World";
char[] chars = s.toCharArray();  //字符数组
byte[] bytes = s.getBytes("UTF-8"); //字节码
//charAt可以传递索引定位字符串中指定位置的字符
System.out.println(s.charAt(1));  //e
//indexof方法用于获取数据在字符串中第一次出现的位置。
System.out.println(s.indexOf("World"));  //6
// lastIndexOf方法用于获取数据在字符串中最后一次出现的位置。
String s1 = "World Hello World";
System.out.println(s1.lastIndexOf("World")); //12
// 是否包含指定的字符串,返回布尔类型
System.out.println(s.contains("Hello123")); //false
// 判断字符串是否以指定的数据开头,返回布尔类型
System.out.println(s.startsWith("Hello")); //true
// 判断字符串是否以指定的数据结尾,返回布尔类型
System.out.println(s.endsWith("World")); //true
// 判断字符串是否为空,空格其实是一个特殊的字符,所以看不到,但是不为空。
System.out.println(s.isEmpty());
  • StringBuilder
StringBuilder s = new StringBuilder();
s.append("abc");
System.out.println(s.toString());
System.out.println(s.length());
System.out.println(s.reverse()); // 反转字符串 cba
System.out.println(s.insert(1, "d")); //cdba

4.包装类

int i = 10;
Integer i1 = new Integer(i);
//将基本数据类型转换为包装类型
// 自动装箱
//Integer i1 = Integer.valueOf(i);
Integer i1 = i;
// 自动拆箱
int i2 = i1.intValue();
int i2 = i1;

5.日期类

时间戳 : 毫秒

 System.currentTimeMillis()
  • 日期类
// Date : 日期类
Date d = new Date();
// Java格式化日期格式:
// y (Y) -> 年 -> yyyy
// m (M) -> MM : 月份,mm:分钟
// d (D) -> dd : 一个月中的日期,D:一年中的日期
// h (H) -> h : 12进制, HH:24进制
// s (S) -> s : 秒,S :毫秒
// Date -> String
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat( pattem: "yyyy-MM-dd HH:mm:ss.SSS")
String dateFormatString = sdf.format(d);
System.out.println(dateFormatString);
// String -> Date
String dateString = "2022-06-01";
Date parseDate = sdf.parse(dateString);
System.out.println(parseDate);
// 根据时间戳构建指定的日期对象。
d.setTime(System.currentTimeMillis());
// 获取时间戳
d.getTime();
System.out.println(parseDate.before(d));  //判断两个时间
System.out.println(parseDate.after(d));
  • 日历类
 // 日历类
//获取当前日期的日历对象
Calendar instance = Calendar.getInstance();
System.out.println(instance.get(Calendar.YEAR));
System.out.println(instance.get(Calendar.MONTH));  //月份 从0开始 如十月返回9
System.out.println(instance.get(Calendar.DATE));
System.out.println(instance.get(Calendar.DAY_OF_WEEK)); // 当前日期是周几
System.out.println(instance.get(Calendar.DAY_OF_MONTH)); // 当前日期是几号
instance.setTime(new Date());
instance.add(Calendar.YEAR, -1);  //当前日期减一年

6.异常

异常 : Exception
异常的分类

  • 1.可以通过代码恢复正常逻辑的异常,称之为运行期异常。(RuntimeException)

  • 2.不可以通过代码恢复正常逻辑的异常,称之为编译期期异常(Exception)
    异常处理语法:

      try :尝试
      catch :  捕捉
         捕捉多个异常的时候,需要先捕捉范围小的异常,然后再捕捉范围大的异常
      finally : 最终
      try {
          可能会出现异常的代码
          如果出现异常,那么JVM会将异常进行封装,形成一个具体的异常类,然后将这个异常抛出
          所有的异常对象都可以被抛出
      } catch ( 抛出的异常对象 对象引用 ) {
          异常的解决方案
      } catch () {
    
      } finally {
         最终执行的代码逻辑
      }
    
//如果方法中可能会出现问题,那么需要提前声明,告诉其他人,我的方法可能会出问题。
// 此时需要使用关键字throws 明确方法会抛出异常
//如果程序中需要手动抛出异常对象,那么需要使用throw关键字,然后new出异常对象
 public static void test( int i, int j ) throws Exception {
        try {
            System.out.println(i / j);
        } catch (ArithmeticException e) {
            throw new Exception("除数为0");
        }

    }

自定义异常

public class Java08_Exception {
    public static void main(String[] args) throws Exception {

        String account = "zhangsan";
        String password = "123123";
        try {
            login(account, password);
        } catch (AccountException accountException) {
            System.out.println("账号不正确,需要重新修正");
        } catch (PasswordException passwordException) {
            System.out.println("密码不正确,需要重新修正");
        } catch (LoginException loginException) {
            System.out.println("其他登录相关的错误");
        }


    }

    public static void login(String account, String password) {
        if (!"admin".equals(account)) {
            throw new AccountException("账号不正确");
        }
        if (!"admin".equals(password)) {
            throw new PasswordException("密码不正确");
        }
        System.out.println("登陆成功");
    }

}

// TODO 自定义异常
class LoginException extends RuntimeException {
    public LoginException(String message) {
        super(message);
    }
}

class AccountException extends LoginException {
    public AccountException(String message) {
        super(message);
    }
}

class PasswordException extends LoginException {
    public PasswordException(String message) {
        super(message);
    }
}

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

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

相关文章

Netty-RPC

RPC&#xff1a;&#xff08;Remote Procedure Call&#xff09;-- 远程过程调用 &#xff08;1&#xff09;一个计算机通信协议。该协议允许运行与A计算机的程序调用运行于另一台计算机的子程序&#xff0c;而程序员无需额外滴为这个交互作用编程。 &#xff08;2&#xff09…

华为机试 - 考古学家

目录 题目描述 输入描述 输出描述 用例 题目解析 算法源码 题目描述 有一个考古学家发现一个石碑&#xff0c;但是很可惜&#xff0c;发现时其已经断成多段&#xff0c;原地发现n个断口整齐的石碑碎片。为了破解石碑内容&#xff0c;考古学家希望有程序能帮忙计算复原后…

[附源码]java毕业设计旅游管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[数据结构]二叉树之堆的实现

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【数据结构】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站…

各种信息收集

谷歌hack语法 site: baidu.com 搜索关于baidu.com的相关子域名网站 黑客 site:baidu.com 搜索关于baidu.com的子域名网站中有关字符“黑客”的网页 inurl: admin/login.php 搜索含有"admin/login.php"的url inurl: login site:baidu.com …

ATF SMC处理

文章目录ATF SMC上下文结构体SMC handler实现ATF SMC上下文结构体 ATF在处理SMC的时候会把CPU的寄存器保存起来&#xff0c;退出SMC的时候恢复现场。使用qemu_v8.mk编译出来的ATF没有定义CTX_INCLUDE_EL2_REGS&#xff0c;CTX_INCLUDE_FPREGS和CTX_INCLUDE_PAUTH_REGS。 lib/c…

Pytorch的grid_sample是如何实现对grid求导的?(源码解读)

Pytorch的grid_sample是如何实现对grid求导的&#xff1f;&#xff08;源码解读&#xff09; 这里本人的参考源码是grid_sample的CPU内核的CPP实现&#xff1a;https://github.com/pytorch/pytorch/blob/b039a715ce4e9cca82ae3bf72cb84652957b2844/aten/src/ATen/native/cpu/G…

【Detectron2】代码库学习-4. LazyConfig 配置文件

目录1. 配置文件2. LazyConfig 导入导出3. 递归实例化4. 基于LazyConfig的训练步骤4.1 导入依赖库4.2 日志初始化4.3 训练4.4 评估4.5 训练流程4.6 主函数入口5. TipsDetectron2是Facebook AI Research(FAIR)推出的基于Pytorch的视觉算法开源框架&#xff0c;主要聚焦于目标检测…

力扣160 - 相交链表【双指针妙解】

链表也能相交~一、题目描述二、思路分析与罗列三、整体代码展示四、总结与提炼一、题目描述 原题传送门 示例 1&#xff1a; 输入&#xff1a;intersectVal 8, listA [4,1,8,4,5], listB [5,6,1,8,4,5], skipA 2, skipB 3 输出&#xff1a;Intersected at ‘8’ 解释&…

MySQL索引

索引索引的相关概念索引分类索引的底层数据结构及其原理主键索引&二级索引聚集和非聚集索引哈西索引&&自适应哈西索引索引和慢查询日志索引优化索引的相关概念 什么是索引&#xff1f;索引其实就是一个数据结构。当表中的数据量到达几十万甚至上百万的时候&#x…

每个 Flutter 开发者都应该知道的一些原则

“仅仅让代码起作用是不够的。有效的代码经常被严重破坏。仅满足于工作代码的程序员表现得不专业。他们可能担心没有时间改进代码的结构和设计,但我不同意。没有什么比糟糕的代码对开发项目产生更深远、更长期的影响了。” ― Robert C. Martin,Clean Code:敏捷软件工艺手册…

fpga nvme 寄存器

图1所示的NVMe多队列&#xff0c;每个队列支持64K命令&#xff0c;最多支持64K队列。这些队列的设计使得IO命令和对命令的处理不仅可以在同一处理器内核上运行&#xff0c;也可以充分利用多核处理器的并行处理能力。每个应用程序或线程可以有自己的独立队列&#xff0c;因此不需…

基于Nacos的注册中心与配置中心

基于Nacos的注册中心与配置中心 Nacos简介 概述 Nacos全称是动态命名和配置服务&#xff0c;Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos主要用于发现、配置和管理微服务。 什么是Nacos Nacos支持几乎所有主流类型的服务的发现、配置和…

同花顺_代码解析_技术指标_A

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 ABI AD ADL ADR ADTM ADVOL AMV ARBR ARMS ASI ATR ABI 绝对幅度指标 算法&#xff1a;上涨家数减去下跌家数所得的差的绝对值。 该指标只适用于大盘日线。 行号 1 aa…

题目7飞机票订票系统

题目7飞机票订票系统问题描述:某公司每天有10航班(航班号、价格)&#xff0c;每个航班的飞机&#xff0c;共有80个座位&#xff0c; 20排&#xff0c;每排4个位子。编号为A&#xff0c;BCD。如座位号:10D表示10排D座。 运行界面如下&#xff1a; 1)能从键盘录入订票信息:乘客的…

[Games 101] Lecture 13-16 Ray Tracing

Ray Tracing Why Ray Tracing 光栅化不能得到很好的全局光照效果 软阴影光线弹射超过一次&#xff08;间接光照&#xff09; 光栅化是一个快速的近似&#xff0c;但是质量较低 光线追踪是准确的&#xff0c;但是较慢 Rasterization: real-time, ray tracing: offline生成一帧…

狗屎一样的面试官,你遇到过几个?

做了几年软件开发&#xff0c;我们都或多或少面试过别人&#xff0c;或者被别人面试过。大家最常吐槽的就是面试造火箭&#xff0c;进厂拧螺丝。今天就来吐槽一下那些奇葩&#xff08;gou&#xff09;一样的面试官 A 那是在我刚工作1年的时候&#xff0c;出去面试前端开发。 那…

分布式开源存储架构Ceph概述

概述 k8s的后端存储中ceph应用较为广泛&#xff0c;当前的存储市场仍然是由一些行业巨头垄断&#xff0c;但在开源市场还是有一些不错的分布式存储&#xff0c;其中包括了Ceph、Swift、sheepdog、glusterfs等 什么是ceph&#xff1f; Ceph需要具有可靠性&#xff08;reliab…

C++11标准模板(STL)- 算法(std::partition_point)

定义于头文件 <algorithm> 算法库提供大量用途的函数&#xff08;例如查找、排序、计数、操作&#xff09;&#xff0c;它们在元素范围上操作。注意范围定义为 [first, last) &#xff0c;其中 last 指代要查询或修改的最后元素的后一个元素。 定位已划分范围的划分点 …

线上崩了?一招教你快速定位问题。

&#x1f44f; 背景 正浏览着下班后去哪家店撸串&#xff0c;结果隔壁组同事囧着脸过来问我&#xff1a;大哥&#xff0c;赶紧过去帮忙看个问题&#xff01;客户反馈很多次了&#xff0c;一直找不出问题出在哪里&#xff01;&#xff01;&#xff01; 我&#xff1a;能不能有…