eclipse使用的步骤

第一步: 选择工作目录。 以后在Eclipse上面写的所有代码都是在工作目录上的。

第二步: 在Project Exploer 窗口上创建一个工程,以后我们写代码都是以工程作为单位的。
新建工程的 步骤:
Project Exploer 窗口右击----------> New---------> java Project 第三步: 在工程的src目录下右击,new 一个Class就创建了一个类。 工程的目录介绍:
settings: elcipse自动生成的配置文件。 别碰它。
bin: 用于存放所有的class文件。
src: 用于存放所有的java源文件。 第四步: 运行java文件。 方式一: java的源代码右击-------->run as -----------> java application 方式二: 绿色箭头--------->run as -----------> java application 方式三: 快捷键的运行: ctrl+ f11

使用eclipse 好处

  1. ctrl + / 内部补全,只能提示。

    1. 不需要你再使用javac工具编译,你在Eclipse上面一旦保存,Eclipse自动编译。
    2. 精准报错,自动修复(ctrl+ 1)。

window—-》Reset Perspective 重置界面的窗口

Object类

Object类是所有类的终极父类。 任何一个类都继承了Object类。

Object类型的多态引用是会付出代价的

当你把对象装进ArrayList<Dog>时,它会被当做Dog来输入输出

ArrayList<Dog> myDogArraylist = new ArrayList<Dog>();
Dog dog1 = new Dog();
myDogArraylist.add(dog1);
Dog d = myDogArraylist.get(0);

但若你把它声明为ArrayList<Object>时会怎样?

ArrayList<Object> myDogArraylist = new ArrayList<Object>();
Dog dog1 = new Dog();
myDogArraylist.add(dog1);
// 下面的代码无法通过编译。get()方法会返回Object类型,编译期无法确认它是Dog
Dog d = myDogArraylist.get(0);

任何从ArrayList<Object>取出的东西都会被当做Object类型的引用而不管它原来是什么!

Object类常用的方法:

toString();     返回该对象的字符串表示。 返回一个字符串用于描述该对象的。

疑问: toString() 有何作用?

  重写toString之后,我们直接输出一个对象的时候,就会输出符合我们所需求的格式数据。

equals(Object obj)   用于比较两个对象的内存地址,判断两个对象是否为同一个对象。

hashCode()   返回该对象的哈希码值(大家可以把哈希码就 理解成是对象的内存地址)/

java中的规范:一般我们重写了一个类的equals方法,我们都会重写它的hashCode方法。

查看源代码的方式:

方式一: 按住ctrl键,单击你需要看的源代码.

方式二:把光标移动到你需要查看代码处按下F3.

class Person{

int id;

String name;

public Person(int id, String name) {
this.id = id;
this.name = name;
} public Person() {
} //目前我需要直接输出一个对象的时候,输出 的格式是: 编号:110 姓名: 狗娃 这种格式。 目前Object的
// toString方法无法满足子类的需求,那么这时候我们就应该对Object类的toString进行重写。
@Override
public String toString() {
return "编号:"+ this.id + " 姓名:"+this.name;
} //为什么要重写:Object的equals方法默认比较的是两个对象的内存地址,我目前需要比较的是两个对象的身份证,所以Object类的equals方法不符合我现在的需求。
@Override
public boolean equals(Object obj) {
Person p = (Person)obj;
return this.id== p.id;
} @Override
public int hashCode() {
return this.id;
}
}
public class Demo1 { public static void main(String[] args) { /*
Object o = new Object();
System.out.println(o.toString()); // java.lang.Object@18b3364 返回的字符串表示: 完整类名+@+ 对象的哈希码
System.out.println(o); // 通过查看源代码得知,直接输出一个对象 的时候,实际上在println方法内部会调用这个 调用的toString方法,把把toString方法返回的内容输出。
//疑问: 为什么直接输出一个对象的时候和输出对象的toString方法返回的字符串结果是一样的呢? Person p1 = new Person(110,"狗娃");
System.out.println("p1:"+p1);
//如果我们能够输出一个p对象的时候,输出的格式: 编号:110 姓名: 狗娃..
Person p2 = new Person(112,"狗剩");
System.out.println("p2:"+p2);
*/ Person p1 = new Person(110,"狗娃");
Person p2 = new Person(110,"陈富贵");
//需求:在现实生活中只要两个人的身份证一致,那么就是同一个人。
System.out.println("p1与p2是同一个对象吗?"+ p1.equals(p2)); System.out.println("p1哈希码:"+ p1.hashCode());
System.out.println("p2哈希码:"+ p2.hashCode());
}
}

String类

笔试题目:new String(“abc”)创建了几个对象?

两个对象, 一个对象是 位于字符串常量池中,一个对象是位于堆内存中。

String str1 = "hello";
String str2 = "hello";
String str3 = new String("hello");
String str4 = new String("hello");
System.out.println("str1==str2?"+(str1==str2)); // true
System.out.println("str2==str3?"+(str2==str3)); //false
System.out.println("str3==str4?"+(str3==str4)); // false
System.out.println("str3.equals(str2)?"+(str3.equals(str4))); //true
//是String类重写了Object的equals方法,比较的是两个字符串对象 的内容 是否一致。
// "=="用于比较 引用数据类型数据的时候比较的是两个对象 的内存地址,equals方法默认情况下比较也是两个对象 的内存地址。

String构造方法

String() 创建一个空内容 的字符串对象。

String(byte[] bytes)  使用一个字节数组构建一个字符串对象

String(byte[] bytes, int offset, int length)
bytes : 要解码的数组
offset: 指定从数组中那个索引值开始解码。
length: 要解码多个元素。 String(char[] value) 使用一个字符数组构建一个字符串。
String(char[] value, int offset, int count) 使用一个字符数组构建一个字符串, 指定开始的索引值,与使用字符个数。
String(int[] codePoints,int offset,int count)
String(String original)

记住: 使用字节数组或者字符数组都可以构建一个字符串对象。

String str = new String();
byte[] buf = {97,98,99}; str = new String(buf); //使用一个字节数组构建一个字符串对象
str = new String(buf,1,2); //使用一个字节数组构建一个字符串对象,指定开始解码 的索引值和解码的个数。
System.out.println("字符串的内容:"+str);//结果:字符串的内容:bc
char[] arr = {'明','天','是','圣','诞'};
str = new String(arr); //使用字符数组构建一个字符串
str = new String(arr,3,2);
System.out.println("字符串的内容:"+str);//字符串的内容:圣诞
int[] buf2 = {65,66,67};
str = new String(buf2,0,3);
System.out.println("字符串的内容:"+str);//字符串的内容:ABC
str = new String("abc");
System.out.println("字符串的内容:"+str);//字符串的内容:abc

使用常量.equals可以避免出现空指针异常的情况,建议这样使用

"中国".equals(str)

2.2 获取方法

int length()  获取字符串的长度
char charAt(int index) 获取特定位置的字符 (角标越界)
int indexOf(String str) 查找子串第一次出现的索引值,如果子串没有出现 在字符串中,那么则返回-1表示。
int lastIndexOf(String str) 查找子串最后一次出现的索引值 , 如果子串没有出现 在字符串中,那么则返回-1表示

2.3 判断方法

boolean endsWith(String str) 是否以指定字符结束
boolean isEmpty()是否长度为0 如:“”,如果是null会报错。
boolean contains(CharSequences) 是否包含指定序列 应用:搜索
boolean equals(Object anObject) 是否相等
boolean equalsIgnoreCase(String anotherString) 忽略大小写是否相等

2.4 转换方法

char[] toCharArray()  将字符串转换为字符数组
byte[] getBytes();

字节数组与字符数组、字符串他们三者之间是可以互相转换。

其他方法

String replace(String oldChar, String newChar) 替换
String[] split(String regex) 切割 String substring(int beginIndex) 指定开始 的索引值截取子串
String substring(int beginIndex, int endIndex)指定开始 与结束的索引值截取子串,包头不包尾 注意:截取的内容是包括开始的索引值,不包括结束的索引值 String toUpperCase() 转大写
String toLowerCase() 转小写
String trim() 去除字符串首尾的空格 //统计子串出现 的次数
public static void getCount(String str,String target){
int count = 0 ; //用于记录出现的次数
int fromIndex = 0; // 记录从那个索引值开始寻找目标子串
while((fromIndex = str.indexOf(target, fromIndex))!=-1){
//如果indexof方法返回 的不是-1,那么就是已经找到了目标 元素。
count++;
fromIndex = fromIndex+target.length();
}
System.out.println("出现的次数:"+ count);
} //字符串反转
public static String reverse(String str){
char[] arr = str.toCharArray();
for(int startIndex = 0 , endIndex=arr.length-1 ; startIndex<endIndex; startIndex++,endIndex--){
char temp = arr[startIndex];
arr[startIndex] = arr[endIndex];
arr[endIndex] = temp;
}
//使用字符数组构建一个字符串。
return new String(arr);
} // 需求1:自己实现trim的方法。
public static String myTrim(String str){
//先转换成字符 数组
char[] arr = str.toCharArray();
//定义两个 变量记录开始与结束 的索引值
int startIndex = 0 ;
int endIndex = arr.length -1;
//确定开始 的索引值
while(true){
if(arr[startIndex]==' '){
startIndex++;
}else{
break;
}
}
//确定结束 的索引值:
while(true){
if(arr[endIndex]==' '){
endIndex--;
}else{
break;
}
}
//截取子串返回
return str.substring(startIndex,endIndex+1);
}

stringbuffer类

字符串特点:字符串是常量;它们的值在创建之后不能更改.

字符串的内容一旦发生了变化,那么马上会创建一个新 的对象。

注意: 字符串的内容不适宜频繁修改,因为一旦修改马上就会创建一个新的对象。

如果需要频繁修改字符串 的内容,建议使用字符串缓冲 类(StringBuffer)。

StringBuffer 其实就是一个存储字符 的容器。

使用Stringbuffer无 参的构造函数创建 一个对象时,默认的初始容量是多少? 如果长度不够使用了,自动增长多少倍?

StringBuffer 底层是依赖了一个字符数组才能存储字符数据 的,该字符串数组默认 的初始容量是16, 如果字符数组的长度不够使用 时,自动增长1倍。eclipse

java基础--eclipse使用、object类、String类、stringbuffer类的更多相关文章

  1. Java基础知识强化09:String、StringBuffer和StringBuilder使用

    1. 对于三者使用的总结: (1).如果要操作少量的数据用 = String               (2).单线程操作字符串缓冲区下操作大量数据 = StringBuilder (3).多线程操 ...

  2. JAVA基础知识总结14(String、StringBuffer、StringBuilder)

    1.String字符串: java中用String类进行描述.对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. 如何定义字符串对象呢? ...

  3. Java 基础 常用API (Object类,String类,StringBuffer类)

    Java API Java 的API(API: Application(应用) Programming(程序) Interface(接口)) Java API就是JDK中提供给我们使用的类,这些类将底 ...

  4. Java基础(三十四)String、StringBuffer类和数据缓冲区Buffer类

    一.String类 1.创建字符串对象 创建字符串对象有两种方法:直接用“=”或者使用“new String(...)” String aStr = "TMZ"; String b ...

  5. Java基础扫盲系列(-)—— String中的format

    Java基础扫盲系列(-)-- String中的format 以前大学学习C语言时,有函数printf,能够按照格式打印输出的内容.但是工作后使用Java,也没有遇到过格式打印的需求,今天遇到项目代码 ...

  6. java基础-Eclipse开发工具介绍

    java基础-Eclipse开发工具介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 所谓工欲善其事必先利其器,即将身为一名Java开发工程师怎么能没有一款好使的IDE呢?今天就 ...

  7. Java基础-Eclipse第三方安装包管理工具之Maven

    Java基础-Eclipse第三方安装包管理工具之Maven 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 玩过Linux的小伙伴应该都知道yum吧,我们只要把搭建好的yum仓库配 ...

  8. Java基础教程(19)--Object类

      Object类位于类结构树的最顶端,所有的类都是它的直接或间接子类,因此所有的类都继承了Object类的方法,我们可以在需要的时候覆盖这些方法.下面是一些将会在本文中讨论的Object类的方法: ...

  9. [ 转载 ] Java基础10--关于Object类下所有方法的简单解析

    关于Object类下所有方法的简单解析 类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直 ...

  10. java基础学习总结——Object类

    一.Object类介绍

随机推荐

  1. 2024 蓝桥杯模拟赛3(div1+div2)

    2024 蓝桥杯模拟赛3(div1+div2) P8834 [传智杯 #3 决赛] 序列 简单的模拟,数据范围很小,暴力即可 点击查看代码 #include <bits/stdc++.h> ...

  2. 又来一个挑战 Elastic 的,初识 SigLens

    Elastic Stack 在日志领域具备无与伦比的地位,各类新兴的开源项目都声称比 Elastic 更节省资源,同时检索速度也不慢,比如 ClickHouse.Loki.OpenObserve.VM ...

  3. win自带的远程桌面内网也能用简直太香了,mstsc配置方法以及解决由于没有远程桌面授权服务器可以提供许可证

    以前都是用mstsc命令远程连接控制有公网ip的服务器,最近内网设置了下也能用简直太香了,终于不用担心某desk限时长限次数了: 配置方法: 右键 计算机 选择属性,点击远程设置,在远程协助框中勾选 ...

  4. js获取本地图片文件的原始宽高尺寸

    <!--      关键api:URL.createObjectURL(object) object:File对象或 Blob 对象     参考:https://developer.mozil ...

  5. 可轻便docker部署的密码保存系统:Vaultwarden

    一.简介 Vaultwarden是著名的Bitwarden项目的一个分支,是一个社区驱动的项目,使用Rust语言编写.它是Bitwarden的轻量级自托管替代方案,完全兼容Bitwarden客户端协议 ...

  6. 开发 MCP Proxy(代理)也可以用 Solon AI MCP 哟!

    MCP 有三种通讯方式: 通道 说明 备注 stdio 本地进程内通讯 现有 sse http 远程 http 通讯 现有 streamable http 远程 http 通讯 (MCP 官方刚通过决 ...

  7. mysql 5.7等保2.0安全配置

    一.安装密码校验插件validate_password 在使用服务器插件之前,必须将它们加载到服务器中.MySQL支持在服务器启动和运行时加载插件.还可以在启动时控制加载插件的激活状态,并在运行时卸载 ...

  8. 重载(Overloading)与重写(Override)的区别?

    重载(Overloading)与重写(Override)的区别? No. 区别 重载 重写 1 英文单词 Overloading Override 2 发生范围 发生在一个类里面 发生在继承关系中 3 ...

  9. 一个日h站的Nday

    0x00 前言 今天先来无事的我翻起了qq收藏夹.忽然发现了一个去年EDUSRC群里一个老表发的洞.今天就给大家发出来耍耍. 抵制黄色网站人人有责,打造绿色上网环境. 面对正规网站时候,请不要做非法测 ...

  10. 【BUG】vite build、Flask运行后报错Failed to load module script. Strict MIME type checking is enforced

    解决方案来源于Stack Overflow. 翻译来源于javascript - Python Flask - 错误 : "Failed to load module script. Str ...