比较字符串,equals防空指针问题

1,比较两个字符串内容的话,用a.equals(b)比较,其中a,b是两个字符串,用a==b的话比较的是a和b的内存地址。
2,如果一个字符串是变量,另一个字符串是常量的话,一定要把常量写在前面,变量写在后面(即括号内),这样写的原因只有一个,避免报空指针异常。如:a是常量字符串,b是变量字符串,则一定要写成a.equals(b).不能写成b.equals(a),否则如果b为null的话,绝对报空指针异常。

新手都需要注意这两点啊。

希望能够帮到你

时间: 2025-01-24 03:37:03

比较字符串,equals防空指针问题的相关文章

返回“字符串常量的指针”和“返回数组名”的区别

char*getmemory(void) { char p[]=”hello world”; return p; } void test(void) { char *str=NULL; str=getmemory(); printf(str); } 问:运行Test 函数会有什么样的结果? 由于数组p是栈上数据,返回数组名就是返回栈内存即动态数据区的地址,函数结束会被释放,所以返回的地址也就指向了不确定的位置了,str就成了乱码! 如果改成: char*getmemory(void) { cha

getchar与putchar缓冲区以及字符串数组、指针

getchar与putchar缓冲区 有下面的语句段: while ((s = getchar()) != '\n'){ putchar(s); putchar("\n"); } 这个while循环是怎么工作的呢? 首先getchar在数据缓冲区里读数据进来,这个读取数据是一个个读的,循环依次判断读进来的字符是不是为换行符,是的话就跳出循环,不是就打印出该字符.其实在getchar读取字符之前,通过键盘输入的字符已经通过stdin流全部存入了缓冲区中,getchar只在用户输入了换行符

终于懂了:Delphi的函数名不是地址,取地址必须遵守Object Pascal的语法(Delphi和C的类比:指针、字符串、函数指针、内存分配等)good

这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ---------------------------------------------------------------------------------------------------------------- 在学习Delphi的时候,一个很好的建议是和C/C++去类比着学习,从指针,到内存管理,到数组,到面向对象……各个方面,都是有很多可以相似和或者也有不同的方,类比着学习,一

1161 字符串长度(指针专题)

题目来源:https://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1161Description编写一函数len,求一个字符串的长度,注意该长度不计空格.要求用字符指针实现.在主函数中输入字符串,调用该len函数后输出其长度. int len(char *sp) { //实现sp所指串的长度,不计空格. } Input输入一个字符串,以回车结束,长度不超过100.Output输出一个整数,单独占一行.Sample InputWhat day is tod

(C语言)字符串比较函数,指针数组与数组指针

问题描述: 写一个函数,用于比较两个字符串的比较(string_compare). 程序分析: (1)主要思想:传入两个字符串后,比较这两个字符串中的每个元素,如果第一次比较就不相等,就不要让它进入到下面的比较中.这样一来,将它返回一个相减的值(即:两数组中开始不相等的那两个元素相减,返回值(int类型),是ASCII码值相减).进入比较的过程中时,相等就返回0:其他情况都返回那个相减的值. (2)主要方式:定义指针数组,并对其初始化.然后照上面的思想,进行代码的实现. 代码如下: /***指针

字符串常量初始化指针

今天写个小文说一说字符串地址和字符串常量. 在C/C++中,一个字符串常量表示的是该字符串第一个元素的地址,就跟char指针名,char数组名表示的是字符串第一个元素的地址一样. 想要打印一个地址,用一个简单的 cout << 地址; 语句就可以搞定: 但是下面这两条语句将打印整个字符串 char a[20] = "1234"; cout << a << endl; char *p = a; cout << p << endl

Part6 数组、指针与字符串 6.6指针与数组

数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组. 定义指向数组元素的指针: int a[10], *pa; pa=&a[0]; 或 pa=a; 经过上述定义及赋值后: *pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i]. a[i], *(pa+i), *(a+i), pa[i]都是等效的. //例6-7 (1) 使用数组名和下标访问数组元素 #include<iostream> using nam

golang 数据一 &nbsp; (字符串、数组和数组指针)

从如下几个方面介绍GO语言的数据 1. 字符串 2. 数组 3. 切片 4. 字典 5. 结构 字符串 Go语言中的字符串是由一组不可变的字节(byte)序列组成从源码文件中看出其本身是一个复合结构 string.go  type stringStruct struct {     str unsafe.Pointer         len int } 字符串中的每个字节都是以UTF-8编码存储的Unicode字符字符串的头部指针指向字节数组的开始但是没有NULL或'\0'结尾标志. 表示方式

菜鸟入门记录篇1--C语言中两种关于字符串表达的方法(数组和指针)

现需表示一个字符串“itcast”,表示方法如下所列: 方法1: char name[]="itcast";     //此时定义的是一个字符串变量,数组内包含了6个字母及‘\0’一共7个元素,储存在内存的栈里面,数组内部的字符可以随意改动: (注:内存的“栈”里面储存的是局部变量,值是可以随意更改的) name[0]='t'; printf(“%s\n”,name); 输出结果为:ttcast: 方法2: char *name="itcast";    //此时定