`

疯狂Java 程序员基本功的16课(对象与内存的控制)心得(三)

    博客分类:
  • j2se
 
阅读更多

final修饰的方法不允许子类去覆盖,而且有些情况该方法对子类是不可以访问的,这有点像private ,

 

 

 

Set集合底层是Map的实现,Map底层是数组

用Iterator遍历list和Set时,List在遍历倒数第二个元素时,可以删除任意其他的元素,而不报java.util.ConcurrentModificationException,例如

ArrayList<String> list = new ArrayList<String>();
		list.add("111");
		list.add("222");
		list.add("333");
		list.add("444");
		for(Iterator<String> iterator = list.iterator();iterator.hasNext();){
			String el = iterator.next();
			System.out.println(el);
			if(el.equals("333")) {
				list.remove(list.get(0));
			}
		}
		System.out.println(list.toString());
		//输出的结果如下:
		/*
		111
		222
		333
		[222, 333, 444]
		*/

 Set集合则是在遍历最后一个元素时可以任意删除其他元素。

字符串常量池中常量如果以后也没有用到(即没有引用变量去引用该常量),jvm也不会去回收,这也是内存的泄露

表达式类型的自动提升:

//'a'+7先转换为int类型,后程序自动将基本数据类型再转换为字符串,104hello
		System.out.println('a'+7+"hello");
		//helloa7
		System.out.println("hello"+'a'+7);

 复合赋值运算符的陷阱:

你们可能都遇到这样的问题

short s = 5;
s = s-2;
s -=2;

 

会报编译错误,s = s-2是正常的类型自动转换int类型,所以会报错,但s -=2不会,因为java中特殊的复合赋值运算符,它不仅完成了相应的操作,而且还隐藏了一个强制转换的过程 E1 op= E2(op可以是+、-、%、/等),它相当于E1 = (E1类型)(E1 op E2);

 if--else if --,if要先处理小范围的

大部分时候,如果循环体只包含一条语句,那么就可以省略花括号,但如果循环体内只包含是一条局部变量的定义语句,那么依然不可以省略循环体的花括号。

分享到:
评论

相关推荐

    [Java程序员职场全攻略:从小工到专家].吴亚峰.著.扫描版

    对Java语言本身深入理解,掌握面向对象的编程思想,了解常用的设计模式,这些都是基本功。同时,需要对Java生态中的各种框架和技术进行学习,如Spring、Hibernate等。此外,还要有良好的编码习惯,代码的可读性和可...

    一个阿里工作4年java程序员的从业心得-写给还在迷茫的朋友.docx

    以下是对这位阿里四年工作经验的Java程序员从业心得的详细解读: 1. **Java基础的重要性**:无论在哪个阶段,Java基础知识都是面试中的重点。从String对象的理解到设计模式的应用,程序员需要不断深化对Java内存...

    《Java基础36讲》

    在学习和教学Java的过程中,作者发现了学习中存在的几个问题:仅阅读不实践、脱离工程实际、只注重原理而不落地操作、基本功不扎实等。作者通过自我反思,指出学编程需要的是实用性和落地能力,而不是仅仅停留在理论...

    如何成为编程高手

    在编程的世界里,成为一名高手并非一朝一夕之功,而是需要不断学习、实践和积累经验的过程。"如何成为编程高手"这个主题涵盖了广泛的技能和知识领域,让我们一起深入探讨。 首先,掌握基础是关键。无论是Java、...

    前辈的c++50个建议

    毕竟,扎实的基本功才是长期发展的基石。 ### 45. 在每次学习结束时总结所学知识 通过总结归纳,可以加深对所学内容的理解,并巩固记忆。 ### 46. 记录学习过程中的笔记和心得 养成记录笔记的习惯,不仅有助于...

Global site tag (gtag.js) - Google Analytics