From 110f0e7de997bd45c6e71c41de7bffa78b1448d8 Mon Sep 17 00:00:00 2001 From: Zack Buhman Date: Sun, 12 Jan 2025 18:19:35 -0600 Subject: [PATCH] wip --- classes/java/lang/Boolean.java | 2 -- classes/java/lang/String.java | 60 ++++++++++++++++++++++++++++------ 2 files changed, 50 insertions(+), 12 deletions(-) diff --git a/classes/java/lang/Boolean.java b/classes/java/lang/Boolean.java index eb954d6..93d0fdf 100644 --- a/classes/java/lang/Boolean.java +++ b/classes/java/lang/Boolean.java @@ -5,8 +5,6 @@ class Boolean { public static final Boolean TRUE = new Boolean(true); - public static final Class TYPE = (Class)Class.getPrimitiveClass("boolean"); - private final boolean value; public Boolean(boolean value) { diff --git a/classes/java/lang/String.java b/classes/java/lang/String.java index 3943a5e..294db6d 100644 --- a/classes/java/lang/String.java +++ b/classes/java/lang/String.java @@ -1,6 +1,9 @@ package java.lang; -public class String { + +public final class String + implements Comparable, CharSequence { + private final char[] value; public String() { @@ -26,14 +29,14 @@ public class String { this(value, 0, value.length); } - public String(char[] value, int offset, int length) { - this.value = new char[length]; + public String(char[] value, int offset, int count) { + this.value = new char[count]; int i = 0; - while (length > 0) { + while (count > 0) { this.value[i] = value[offset]; i += 1; offset += 1; - length -= 1; + count -= 1; } } @@ -47,17 +50,54 @@ public class String { } public int compareTo(String anotherString) { - int length = this.length() < anotherString.length() - ? this.length() - : anotherString.length(); + int length = this.value.length < anotherString.value.length + ? this.value.length + : anotherString.value.length; for (knt k = 0; k < length; k++) { - int difference = this.charAt(k) - anotherString.charAt(k); + int difference = this.value[k] - anotherString.value[k]; if (difference != 0) return difference; } - return this.length() - anotherString.length(); + return this.value.length - anotherString.value.length; + } + + public int compareToIgnoreCase(String str) { + int length = this.value.length < anotherString.value.length + ? this.value.length + : anotherString.value.length; + + for (knt k = 0; k < length; k++) { + char a = Character.toLowerCase(Character.toUpperCase(this.value[k])); + char b = Character.toLowerCase(Character.toUpperCase(anotherString.value[k])); + int difference = a - b; + if (difference != 0) + return difference; + } + + return this.value.length - anotherString.value.length; + } + + public String concat(String str) { + if (str.value.length == 0) + return this; + if (value.length == 0) + return str; + int length_a = this.value.length; + int length_b = str.value.length; + char[] new_value = new char[length_a + length_b]; + for (int i = 0; i < length_a; i++) { + new_value[i] = value[i]; + } + for (int i = 0; i < length_b; i++) { + new_value[length_a + i] = str.value[i]; + } + return new String(new_value); + } + + public boolean contains(CharSequence s) { + } public String toString() {