Java 指针和字符串简述

这篇博客探讨了Java中的对象数组,包括定义、访问和构造函数的应用。同时,文章详细介绍了指针的概念,包括指针变量的定义、运算以及const指针的三种用法,强调了指针在内存地址操作中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、对象数组

(1)对象数组的定义与访问

定义对象数组:

类名 数组名[元素个数];

访问对象数组元素,通过下标访问:

数组名[下标].成员名

(2)数组元素所属类的构造函数

元素所属的类不声明构造函数,则采用默认构造函数。

各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。

各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。

当数组中每一个对象被删除时,系统都要调用一次析构函数。

2、指针的概念、定义和指针运算

程序在运行时每个变量都对应一个内存地址,通常我们都是对变量的值进行操作,很少考虑对变量的地址进行操作,但确实有些时候需要利用变量的内存地址才能完成一些工作,或者更利于工作的完成。

例如,当调用函数时数组类型参数不是将整个数组的每一个值都传到函数内部,而是向函数内部传递了数组的地址,在函数内部对数组参数的使用就直接转化为对外部数组的操作。这种传地址方式极大地简化了程序调用的方式,也为编程人员提供了方便。因此,对地址的操作是C++语言中一项重要内容。

(1)指针概念

指针:内存地址,用于间接访问内存单元

指针变量:用于存放地址的变量

(2)指针变量定义

存储类别  数据类型  *指针变量名

存储类别包括:extern、static和auto。

数据类型可以是基本类型,如:int、float、char、double等,也可以是数组、指针等数据类型。

通常把指针指向的变量的数据类型称为指针的数据类型(也称为基类型);而任何一个指针变量本身数据值的类型都是unsigned long int。

注意:定义一个指针变量必须用符号“*”,它表明其后的变量是指针变量,但千万不要认为“*p”是指针变量,指针变量是p而不是*p。

(3)与地址相关的运算

& 运算符:取地址运算符,&x的值为x的地址。

* 运算符:指针运算符,或指向运算符,也称间接运算符,*p代表p所指向的变量。

注意:在指针变量的定义和指针变量的引用中都有*p。但引用指针时的*p与定义指针变量时用的*p是有区别的,它们形式上相似,而含义不同。

有关指针表示方法的区别:

例如,有一个指针px ,

px  — 指针变量,它的内容是地址量。

*px— 指针的目标变量,它的内容是数据。

&px — 指针变量占用的存储区域的地址。

int *ptr = &i;  //取i的地址赋给ptr

其实分开写 :int *ptr;

             Ptr=&i;

 

(4) const指针

关键字const放在不同的位置表示的意义也不相同:

(1)关键字const放在指针类型前,就是声明一个指向常量的指针变量。此时,在程序中不能通过指针来改变它所指向的值,但是指针本身的值可以改变,即指针可以指向其他数据。

     格式: const  int  *ptr

(2)关键字const放在“*”号和指针名之间,就是声明一个指针常量(也称常指针)。因此,指针本身的值不可改变,也即它不能再指向其他数据,但它所指向的数据的值可以改变。

     格式:int  *const  ptr

(3)关键字const在上述两个地方都加,则是声明一个指向常量的指针常量(指向常量的常指针),指针本身的值不可改变,它所指向的数据的值也不能通过指针改变。

    格式: *const  int *const ptr

 

 

 

 

 

 

 

 

1. StringBuffer、StringBuilderString的区别如下: - String是不可变的,每次对String进行修改都会创建一个新的String对象;StringBufferStringBuilder是可变的,可以直接对其进行修改。 - StringBuffer是线程安全的,适用于多线程环境;StringBuilder是非线程安全的,适用于单线程环境。 - 在频繁进行字符串拼接操作时,建议使用StringBuilder,因为它的性能更高;而在多线程环境下进行字符串操作时,建议使用StringBuffer,因为它是线程安全的。 2. java.util.Date类的构造方法new Date(long mills)中的mills表示从1970年1月1日00:00:00 GMT(格林尼治标准时间)开始计算的毫秒数。这个参数用于指定Date对象所表示的具体日期时间。 3. 时间模式是一种用于格式化解析日期时间的字符串模板。它使用特定的占位符来表示年、月、日、小时、分钟、秒等时间单位,通过替换占位符来得到相应的日期时间字符串。 4. 将日期对象格式化为字符串可以使用SimpleDateFormat类的format方法。字符串解析为日期对象可以使用SimpleDateFormat类的parse方法。 5. 要获取java.util.Calendar对象,可以通过以下方式: - 使用Calendar类的getInstance方法:Calendar calendar = Calendar.getInstance()。此方法返回一个默认时区当前日期时间设置的Calendar对象。 6. String类中的五个判断类型的方法包括: - startsWith:判断字符串是否以指定的前缀开始。 - endsWith:判断字符串是否以指定的后缀结束。 - isEmpty:判断字符串是否为空,即长度为0。 - equals:判断字符串内容是否相等。 - equalsIgnoreCase:忽略大小写,判断字符串内容是否相等。 7. String类的charAt方法用于获取字符串指定位置的字符;indexOf方法用于查找指定字符或子字符串字符串中第一次出现的位置索引。它们的区别在于charAt返回指定位置的字符,而indexOf返回指定字符或子字符串的位置索引。 8. 将整数String互相转换可以使用以下方法: - 整数转String:可以使用Integer类的toString方法,或者通过String类的valueOf方法。 - String转整数:可以使用Integer类的parseInt方法,或者通过Integer类的valueOf方法。 9. 对于给定的字符串"W333HHXXXX",要找出连续出现次数最多的字符及其连续出现次数,可以使用以下思路: - 遍历字符串,记录当前字符连续出现次数。 - 如果下一个字符与当前字符相同,则将连续出现次数加1;如果不同,则更新最大连续出现次数,并记录对应的字符。 - 最后得到连续出现次数最多的字符对应的连续出现次数。 10. 方法入参的可变参数表示方法可以接受数量可变的参数。可变参数使用形式为类型... 参数名,注意点如下: - 可变参数必须是方法的最后一个参数。 - 可变参数可以传入任意数量的参数,包括0个参数。 - 在方法内部,可变参数被当作数组处理。 - 使用可变参数时,需要注意空指针异常的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值