关于操作符,线性表,优先级应该注意的东西

继昨天自学中应该注意的事项之后,今天再来聊一下java中容易出现的基本问题吧。

首先基本类型和它的包装类我就不多说了,但是值得注意的是String,首先它并不是基本类型,其次它被定义为final类型(也就是说不可集成),为什么要把String定义为final

?,网上也有很多答案,比较好的答案是:主要是为了“效率” 和 “安全性” 的缘故。若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所以String被定义成final。

再来说一下用String连接字符串的问题吧,一般大家习惯这样来new一个字符串对象

String string="abcdef";

 连接的时候直接用“+”号链接,一般情况下这没什么问题,但是在for循环要很多次连接字符串的情况下它的效率就很低了,用StringBuilder或StringBuffer会比较好,我在StringBuilder和StringBuffer解析(百度面试题优化需要用到的)有说明。你也可以在我的博客www.marksaas.com看到。。

下面在在来说一下在线性表中容易犯的错误。。

看下面的程序:

import java.util.LinkedList;
import java.util.List;
/**
 * author:marksaas
 * blog:www.marksaas.com
 *在用for循环时,使用线性表删除所以元素时容易发生跳跃,可以每次删除一个元素后让变量-1
 *最好用clear()功能删除所以元素
 *
 */
public class For {
	public static void main(String[] args) {
		List<String> tempList=new LinkedList<String>();
		tempList.add("a");
		tempList.add("b");
		tempList.add("c");
		for(int i=0;i<tempList.size();i++){
			tempList.remove(i);
			 //i-=1;
		}
		if(tempList.size()>0){
			System.out.println("\n剩余元素个数为"+tempList.size()+",具体元素有:");
			for(String item:tempList){
				System.out.println(item+" ");
			}
		}
		else{
			System.out.println("clear all");
		}
	}
}

当把注释去掉后元素才会真正删除完。。

另外在写程序的时候请注意0的使用,看如下代码:

/**
 * author:marksaas
 * blog:www.marksaas.com
 *
 */
public class DangerOfZero {
	public static void main(String[] args) {
		int num1=023;//num1为八进制数
		int num2=3;
		int result=num1*num2;
		System.out.println(result);
	}
}

输出结果显然和预期的结果就不符了,

关于优先级我想说的是为了尽量让程序清晰易读,请适当加上括号。关于优先级的图我就不上了,网上多的是。。

今天先说到这,如果大家有补充的欢迎在下面留言。。

关于操作符,线性表,优先级应该注意的东西,布布扣,bubuko.com

时间: 2024-10-24 15:34:15

关于操作符,线性表,优先级应该注意的东西的相关文章

[考研系列之数据结构]线性表之栈

?基本概念 栈的定义 限定仅在表尾进行插入或删除的线性表 组成 栈顶 栈底 基本操作 入栈(PUSH) 往栈中插入一个元素 弹栈(POP) 从栈顶删除一个元素 栈的表示 顺序栈 链栈 对于顺序栈,有两个指针base和top base指向栈底 top指向栈顶 对于栈的一些基本情况: 栈不存在时候 base=NULL 栈为空时  top=base 栈的长度 top-base 链栈略过. 栈的应用 1 数制转换 数制转换我们使用一种称之为"辗转相除法"的算法.此算法的基本原理基于: N=(N

动态分配的顺序线性表的十五种操作—C语言实现

线性表 定义:是最常用的,也是最简单的数据结构,是长度为n个数据元素的有序的序列. 含有大量记录的线性表叫文件 记录:稍微复杂的线性表里,数据元素为若干个数据项组成,这时把一个数据元素叫记录 结构特点:在非空有限的条件下,存在唯一的一个表头结点,唯一的一个表尾结点,除去第一个元素之外,每个数据元素都只有一个前驱,除去最后一个元素之外,每一个数据元素都只有一个后继. 注意:线性表中的数据元素可以是各种各样的,但同一线性表中的元素必定具有相同特性(属于同一数据对象,类似数组).线性表的数据元素间有序

线性表之栈与队列

一.栈是限定仅在表尾进行插入和删除操作的线性表 队列是只允许在一端进行插入操作,而在另另一端进行删除操作的线性表. 允许插入和删除的一端称为栈顶,另一端称为栈底,不包含任何数据元素的栈称为空栈,栈称为后进先出  LIFO结构 栈的抽象数据类型 ADT 栈 (stack) Data 同线性表.元素具有相同的类型,相邻元素具有前驱和后继关系 Operation InitStack(*S):初始化操作,建立一个空栈S DestroyStack(*S):若栈存在,则销毁它 ClearStack(*S):

数据结构学习笔记(特殊的线性表:栈与队列)

栈与队列 栈是限定仅在表尾(栈顶)进行插入和删除操作的线性表(后进先出).队列是只允许在一端进行插入操作,而在另一端进行删除操作的线性表(先进先出). 栈(Stack): 1.下标为0的一端作为栈底比较好,因为首元素都存在栈底,变化最小,所以让它作为栈底.定义一个top变量来指示栈顶元素在数组中的位置.栈顶位置top必须小于存储栈长度StackSize,把空栈的判定条件定位top等于-1. 2.进栈与出栈操作(顺序存储结构): 进栈操作push:/*插入元素e为新的栈顶元素*/Status Pu

数据结构(三)——基于顺序存储结构的线性表

数据结构(三)--基于顺序存储结构的线性表 一.基于顺序存储结构的线性表实现 1.顺序存储的定义 线性表的顺序存储结构是用一段地址连续的存储单元依次存储线性表中的数据元素. 2.顺序存储结构的操作 使用一维数组实现顺序存储结构. template <typename T> class SeqList:public List<T> { protected: T* m_array;//顺序存储空间 int m_length;//当前线性表的长度 }; 一维顺序存储结构可以是原生数组或是

数据结构(03)_顺序存储结构线性表

本节我们基于前面实现的数据结构类模板基础,继续完成基于顺序存储结构的线性表的实现,话不多说,继承关系图如下: 14.线性表的本质和操作 14.1.线性表的表现形式 零个多多个数据元素组成的集合 数据元素在位置上是有序排列的 数据元素的个数是有限的 数据元素的类型必须相同 14.2.线性表的抽象定义.性质 线性表是具有相同类型的n(>=)个数据元素的有限序列,(a0, a1, a2... an-1),其中ai是表项,n是表长度.性质: a0为线性表的第一个元素,只有一个后继 an-1为线性表的最后

第6课 - 线性表的顺序存储结构及实现

1. 线性表的顺序存储结构 [顺序存储结构定义] 线性表的顺序存储结构,指的是用一段地址连续的存储单元依此存储线性表中的数据元素. [设计思路] 可以用一维数组来实现顺序存储结构的线性表. 1 template <typename T> 2 class SeqList : public List<T> 3 { 4 protected: 5 T *m_array; //顺序存储空间 6 int m_length; //当前线性表长度 7 }; [顺序存储线性表类的组成] DTLib顺

线性表的本质、操作及顺序存储结构(六)

我们说到线性表,可能好多人还不太理解.那么我们举个例子来说,在幼儿园中,老师们总会让小朋友以同样的派对秩序出行,这个例子的本质就是线性表. 那么线性表(List)的表现形式是怎样的呢?符合以下几个特征:1.零个或多个数据元素组成的集合:2.数据元素在位置上是有序排列的:3.数据元素的个数是有限的:4.数据元素的类型必须是相同的.那么线性表的抽象定义是怎么定义的呢?线性表是具有相同类型的 n( ≥ 0 ) 个数据元素的有限序列.如下 下来我们来看看 List 的本质:1.a0 为线性表的第一个元素

五、顺序存储线性表分析

1.效率分析 采用大O表示法来进行效率分析 template<typename T> class SeqList : public List<T> { protected: T* m_array; // 线性表的存储空间,具体值在子类中实现 int m_length; // 当前线性表的长度 public: bool insert(int i, const T& e); // 最坏O(n),最好O(1) bool remove(int i); // O(n) bool se