java 浅学一下吧 边刷题边学ing

字符串

剑指offer05 替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
熟悉的python版本

class Solution:
    def replaceSpace(self, s: str) -> str:
        res = []
        for i in s:
            if i != ' ':
                res.append(i)
            else:
                res.append('%20')
        return res

学习的java版本

class Solution {
    public String replaceSpace(String s) {
        StringBuilder res = new StringBuilder();
        for(Character c : s.toCharArray())
        {
            if(c == ' ') res.append("%20");
            else res.append(c);
        }
        return res.toString();
    }
}

为了学会这道题需要多少前置知识?

看不懂的地方

StringBuilder
Character
str.toCharArray
res.toString
for(Character c : s.toCharArray())循环结构

Character 类

Character 类用于对单个字符进行操作。
Character 类在对象中包装一个基本类型 char 的值

char ch = 'a';
 
// Unicode 字符表示形式
char uniChar = '\u039A'; 
 
// 字符数组
char[] charArray ={ 'a', 'b', 'c', 'd', 'e' };

然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。
Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象,例如:

Character ch = new Character('a');

String类

String 创建的字符串存储在公共池中,而 new 创建的字符串对象在堆上:

String s1 = "Runoob";              // String 直接创建

String s3 = s1;                    // 相同引用
String s4 = new String("Runoob");   // String 对象创建

String 类是不可改变的,所以你一旦创建了 String 对象,那它的值就无法改变了

StringBuilder 类

StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。

public class RunoobTest{
    public static void main(String args[]){
        StringBuilder sb = new StringBuilder(10);
        sb.append("Runoob..");
        System.out.println(sb);  
        sb.append("!");
        System.out.println(sb); 
        sb.insert(8, "Java");
        System.out.println(sb); 
        sb.delete(5,8);
        System.out.println(sb);  
    }
}

在这里插入图片描述

在这里插入图片描述

for循环

for(初始化; 布尔表达式(限制条件为True/False; 更新) {
    //代码语句
}
  1. 最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。
  2. 然后,检测布尔表达式的值。如果为true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。
  3. 执行一次循环后,更新循环控制变量。
  4. 再次检测布尔表达式。循环执行上面的过程。

在这里插入图片描述

java增强for循环

for(声明语句 : 表达式)
{
   //代码句子
}

声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。

表达式:表达式是要访问的数组名,或者是返回值为数组的方法。

在这里插入图片描述

复盘问题

str.toCharArray是啥:是将题目中的string变成可迭代的string数组
res.toString是啥:是将StringBuilder变成符合题目输出的string
for(Character c : s.toCharArray())目的是为了让c在s这个字符串上遍历
Character c就是新的局部变量,s.toCharArray()是返回值为数组的方法,数组元素为char
就是说 除了for语句 其他地方都要分号 单引号和双引号也不能混用 真实纯纯不习惯了

第一天java AC!啦!
虽然 仍然是一个找不到工作的臭sb状态
虽然 仍然是一个找不到工作的臭sb状态

前置知识?

public
ListNode
while循环段
int和int[]

对象和类

创建类和对象
对象是根据类创建的。在Java中,使用关键字 new 来创建一个新的对象。创建对象需要以下三步:

  1. 声明:声明一个对象,包括对象名称和对象类型。
  2. 实例化:使用关键字 new 来创建一个对象。
  3. 初始化:使用 new创建对象时,会调用构造方法初始化对象。
public class Puppy{
   public Puppy(String name){
      //这个构造器仅有一个参数:name
      System.out.println("小狗的名字是 : " + name ); 
   }
   public static void main(String[] args){
      // 下面的语句将创建一个Puppy对象
      Puppy myPuppy = new Puppy( "tommy" );
   }
}

变量类型

在Java语言中,所有的变量在使用前必须声明。以下列出了一些变量的声明实例。注意有些包含了初始化过程。

int a, b, c;         // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22;         // 声明并初始化 z
String s = "runoob";  // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x';        // 声明变量 x 的值是字符 'x'。

Java语言支持的变量类型有:

  • 类变量:独立于方法之外的变量,用 static 修饰。
  • 实例变量:独立于方法之外的变量,不过没有 static 修饰。
  • 局部变量:类的方法中的变量。

修饰符

访问控制修饰符
Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。

  • default (即默认,什么也不写):
    在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
  • private :在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  • public : 对所有类可见。使用对象:类、接口、变量、方法
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。

非访问修饰符

  • static 修饰符,用来修饰类方法和类变量。 final 修饰符,用来修饰类、方法和变量,
  • final修饰的类不能够被继承,修饰的方法不能被继承类重新定义,修饰的变量为常量,是不可修改的。
  • abstract修饰符,用来创建抽象类和抽象方法。
  • synchronized 和 volatile 修饰符,主要用于线程的编程。

运算符

自增自减运算符

i++ 是 i +=1
i-- 是 i-=1

前缀自增自减法(++a,–a): 先进行自增或者自减运算,再进行表达式运算。 后缀自增自减法(a++,a–):
先进行表达式运算,再进行自增或者自减运算

逻辑运算符

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

三元运算符

variable x = (expression) ? value if true : value if false

实例
int a , b;
      a = 10;
      // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
      b = (a == 1) ? 20 : 30;
      System.out.println( "Value of b is : " +  b );
 
      // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
      b = (a == 10) ? 20 : 30;
      System.out.println( "Value of b is : " + b );

一些列表?

数组Array

数组变量的声明,和创建数组可以用一条语句完成,如下

//方法1
dataType[] array名 = new dataType[arraySize];
//方法2
dataType[] array名 = {value0, value1, ..., valuek};

ArrayList

ArrayList 是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。

import java.util.ArrayList; // 引入 ArrayList 类

ArrayList<E> objectName =new ArrayList<>();  // 初始化

E: 泛型数据类型,用于设置 objectName 的数据类型,只能为引用数据类型。

内置数据类型引用类型
booleanBoolean
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
StringString

Java ArrayList 常用方法列表

方法描述
add()将元素插入到指定位置的 arraylist 中
clear()删除 arraylist 中的所有元素
clone()复制一份 arraylist
get()通过索引值获取 arraylist 中的元素
indexOf()返回 arraylist 中元素的索引值
remove()删除 arraylist 里的单个元素
size()返回 arraylist 里元素数量
sort()对 arraylist 元素进行排序
toArray()将 arraylist 转换为数组
toString()将 arraylist 转换为字符串
forEach()遍历 arraylist 中每一个元素并执行特定操作

LinkedList

Java LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。
与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低。

以下情况使用 ArrayList :

  1. 频繁访问列表中的某一个元素。
  2. 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

  1. 你需要通过循环迭代来访问列表中的某些元素。
  2. 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值