`
pokerwen
  • 浏览: 62781 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 基础学习之点滴

阅读更多

 

  1. 每个实例拥有一个实例变量;每种类别之下共享一个静态变量。
  2. 编译器会处理除RuntimeException外的所有Exception。
  3. try...catch...finally中,finally无论如何都会被最后执行。即使try & catch 内含有return,程序也会在return前先执行finally
  4. try...catch中,如果有多个同父类(除Exception外)的Exception,catch Exception的顺序从上到下应该是子类->父类。否则父类的Exception处理会掩盖了子类的Exception处理。
  5. 在一个方法中,如果出现Exception,并处理了该Exception后,没有重新throw该Exception,则try...catch...finally外的代码还会继续被执行。这会对程序产生灾难性影响的。
    public static void main(String[] arg) {
    	String key = "yes";
    	
    	try {
    		midlefun(key);
    	} catch (Exception e) {
    		e.printStackTrace();
    	}
    	
    	System.out.println("end of main");
    }
    
    static void midlefun(String key) throws Exception {
    	try {
    		System.out.println("start try");
    		doRisky(key);
    		System.out.println("end try");
    	} catch (Exception e) {
    		System.out.println("Exception from midlefun");
    //			throw new Exception();	//如果注释这一条,"end of midlefun"就会被打印出来
    	} finally {
    		System.out.println("finally");
    	}
    	System.out.println("end of midlefun");
    }
    
    static void doRisky(String key) throws Exception{
    	System.out.println("start risky");
    	if("yes".equals(key)) {
    		throw new Exception();
    	}
    	System.out.println("end risky");
    	return ;
    }
     
  6. 方法中的Exception应该要自己处理,如果还需要调用者对该异常也做出反应,则需要再throw出来。
  7. Java的输入/输出API带有链接类型的串流,它代表来源与目的地之间的连接,连接串流将串流与其他串流连接起来。例如:PipedOutputStream

    一般来讲,串流要两两连接才能做出有意义的事情其中一个表示连接,另一个则是要被调用方法的。由于Java中有丰富的输入/输出流,只要配合起来就可以完成各种任务,达到最大的实用性!

    下面的图是一个演示。保存java的对象到一个文件中。java IO流原理

  8.  

  9. 内部类对外部类有特权,可以自由地存取它的内容,就算是私有的内容也一样。内部类可以把外部的方法或变量当作是自己的。例如:
    public class MyOuter {
    	private int x;
    	
    	public int getX() {
    		return x;
    	}
    	
    	class MyInner{
    		void go() {
    			x = 42;	//调用外部类的私有对象
    		}
    	}
    	
    	MyInner inner = new MyInner();	//初始化内部类
    	
    	public void doStuff() {
    		inner.go();
    	}
    	
    	public static void main(String[] arg) {
    		MyOuter outer = new MyOuter();
    		
    		System.out.println(outer.getX());
    		outer.doStuff();
    		
    		System.out.println(outer.getX());
    	}
    }
     如果需要在外部类中生成内部类变量,则需要首先生成外部类对象。这是由于内部类对外部类的那个特权决定的。
    public static void main(String[] arg) {
    	MyOuter outer = new MyOuter();
    	
    	System.out.println(outer.getX());
    	MyOuter.MyInner inner = outer.new MyInner();
    	inner.go();
    	
    	System.out.println(outer.getX());
    }
     内部类一般是在GUI程序中使用比较多。添加ActionListener的时候。
  10. 线程(Thread)
      ~线程启动需要有一个Runnable对象。
      ~线程有三个状态:1.新建(Thread thread = new Thread(runnable););2.可执行(thread.start(););3.执行中(何时被执行由java虚拟机来管理,你无法干预。并且多线程运行中,多个任务会被交替执行,而不是一个一个的被执行);4.堵塞(因为Thread可能在等待其他程序的回复)。
      ~由于多个Thread由虚拟机来管理交替执行,PS:main函数也是一个Thread,其被执行的顺序都是我们无法预测的。例如下面的代码:
    public static void main( String[] args )
    {
    	System.out.println("start");
    	Thread myThread = new Thread(new Runnable() {
    		@Override
    		public void run() {
    			System.out.println("in thread");				
    		}
    	});
    	
    	myThread.start();
    	
    	System.out.println("back to main");
    }
     并不是每次都能够得到下列输出的:
      start
      back to main
      in thread
      有可能得到下面的输出:
      start
      in thread
      back to main
     
      这要看虚拟机开心不开心了。^_^
      ~当某个runnable任务对某个状态敏感,且多个Thread都会操作该状态时,就会产生竞争。这时候可以在操作该状态的方法上,增加修饰符synchronized,以达到加锁的目的。
      ~无论synchronized关键字加在方法上还是对象上,它取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问。
      ~每个对象只有一个锁(lock)与之相关联。
      ~实现同步是要很大的系统开销作为代价的,甚至可能造成死锁,所以尽量避免无谓的同步控制。
  11. 待续
分享到:
评论

相关推荐

    java点滴学习资料

    ### Java点滴学习资料 #### 一、Java简介与特点 Java是一种高级编程语言,由Sun Microsystems公司于1995年推出。Java的核心优势之一在于其跨平台特性,即所谓的“一次编写,到处运行”,这使得Java代码能够在不同...

    java 基础点滴(一)

    在“Java基础点滴(一)”这一主题中,我们探讨的是Java编程语言的基本概念和核心要素,这是每个Java开发者必须掌握的基础知识。这篇博客可能涵盖了变量、数据类型、运算符、控制流程语句以及类与对象等核心概念。 ...

    我的学习笔记,记录从零学习java的点滴

    Java 作为一种广泛使用的编程语言,其最显著的特点之一就是具有良好的跨平台性。这意味着编写的 Java 程序无需修改就能在任何安装了 Java 虚拟机 (JVM) 的平台上运行。这种特性极大地简化了软件的分发和部署流程,并...

    Java应用程序-日记本

    Java应用程序-日记本是一款基于...这个项目对于学习和理解Java GUI编程,特别是Swing库的用法,是一个很好的实例。通过这个程序,用户可以方便地记录生活点滴,同时享受音乐,体现了Java编程在实用性和娱乐性上的结合。

    Java学习心得知识积累

    以下是对Java基础知识、开发工具、以及应用平台的一些深入理解和经验分享。 #### JDK(Java Development Kit):Java的核心组件 JDK是Java开发的核心工具包,包含了编译、运行Java程序所需的所有工具。它不仅包括...

    随时记录自己的每一天(java记事本)

    标题中的“随时记录自己的每一天(java记事本)”指的是一个使用Java编程语言开发的应用程序,它设计用于帮助用户日常记录生活中的点滴,无论是心情、事件还是其他琐碎事务。这个应用程序可能具备基本的文本编辑功能,...

    数据结构及算法学习点滴记录.zip

    这份名为“数据结构及算法学习点滴记录.zip”的压缩包文件显然包含了丰富的学习资源,旨在帮助大学生深入理解和掌握数据结构这一核心概念。 数据结构是计算机存储、组织数据的方式,它涉及到如何在计算机内存中有效...

    基于java的个人日记本系统设计与实现(源代码+数据库+辅导视频).zip

    这个基于Java的个人日记本系统正是顺应这一趋势的产物,它提供了用户友好的界面,方便用户记录生活点滴,同时也展示了Java技术在实际项目中的应用。 首先,我们要理解Java作为编程语言的强大之处。Java是一种面向...

    2022年java试用期转正工作总结500字.docx

    在学习过程中,开发者通过撰写博客记录了点滴进步,这既是自我提升的方式,也是分享和交流的平台,有助于形成良好的学习习惯和知识传承。 总结来说,这份Java试用期转正工作总结展现了开发者在项目实践中不断学习和...

    Java-learning-experience.zip_experience

    总之,“Java learning experience.doc”这份文档很可能是一份宝贵的资源,它以一个在校研究生的视角,详尽地描述了他在Java学习过程中的点滴体会和实用技巧,对于任何渴望提升Java技能的人来说,都是不可多得的学习...

    java夜未眠 程序员的心声

    这本书以其独特的视角,讲述了Java程序员在编程生涯中的点滴,从入门到精通,从困惑到领悟,全方位展现了程序员的成长历程。 在Java的世界里,程序员们常常夜以继日地工作,追求技术的极致。这本书首先介绍了Java...

    爪哇夜未眠(蔡學鏞java)

    这本书旨在深入浅出地讲解Java核心概念,同时也分享了作者在编程旅程中的点滴体验,使得读者在学习技术的同时,也能感受到编程的乐趣和挑战。 在Java编程的世界里,"Java Core"指的是Java语言的基础和核心部分,...

    Java程序员上班那点事儿

    《Java程序员上班那点事儿》这本书,正如其名,旨在揭示Java程序员在日常工作中的点滴细节,帮助初入职场或有经验的开发者更好地理解和应对工作中的挑战。书中涵盖了许多实际问题和解决方案,旨在提升读者的技能水平...

    点滴积累1

    "点滴积累1" 本文档主要讲述了程序员的职业发展、技术栈、学习方法和思想方式等方面的知识点。 1. career development * 程序员的职业发展可以分为基础技术、工具、产品、项目等几个方面。 * 世界需要不同类型...

    java程序员面试交流项目经验

    在技术面试中,尤其是针对Java程序员的面试,重点在于基础扎实和技术细节。面试通常包括笔试、专业技术面试和项目经验考核。笔试和专业面试只需达到70%的满意度即可,而项目经验是决定是否被录用的关键因素。面试官...

    SSM+vue开发-美好生活日志网毕业设计项目源代码+数据库+论文+说明文档Java.zip

    本项目为“美好生活日志网”,专为计算机相关专业学生及Java学习者设计,提供毕业设计、课程设计的高分资源...在SSM框架支持下,开发者可轻松实现功能并持续优化升级,提升项目质量,为未来的学习和工作奠定坚实基础。

    Java源代码-ssm+vue开发美好生活日志网(含数据库、论文等资料文件).zip

    本项目“Java源代码-ssm+vue开发美好生活日志网”是一个综合性的Web...对于基础较好的学习者,可以在本项目的代码基础上进行扩展,例如增加社交分享功能、实现多语言支持或者优化用户界面设计,以实现更多创新功能。

    安卓java读取网页源码-init-Public-Project:init-公共项目

    安卓java读取网页源码 :fuel_pump:说明 ...Java基础文章:文章大部分内容采集为同一系列,比较系统全面。Java面试题则是一些零散但常见的面试题。 ​Java集合 ​Java多线程 ​JVM/NIO/...等等 设计模

    JavaWeb基础之MySQL约束.md

    将自己的学习点滴记录下来,同时也可供大家相互交流,后续将会持续增加Java的相关文章。这是JavaWeb入门基础,数据库MySql基础的相关知识总结。之前自己学的和用的是SQL Server2008,对MySql掌握不够熟练,不过SQL...

    JavaWeb基础之MySql数据库入门01.md

    将自己的学习点滴记录下来,同时也可供大家相互交流,后续将会持续增加Java的相关文章。这是JavaWeb入门基础,数据库MySql基础的相关知识总结。之前自己学的和用的是SQL Server2008,对MySql掌握不够熟练,不过SQL...

Global site tag (gtag.js) - Google Analytics