java学习笔记与总结【1】

注:

    本人是从C/C++的角度来学习JAVA的;在阅读本文时,请先对c/c++有所了解;

一、学习Java的基础知识:

                       1.有C语言的基础;

                       2.数据结构相关知识;

二、简单的说明面向对象程序设计语言java与c/c++不同和相同之处;

     在学习c语言时,c语言是面向过程的语言。学习完c语言后学习C++时,说是c++面向对象的语言,但是在学习的过程中发现C++并不是百分之百的面向对象的语言,他可以用c语言的方式来工作。Java就与c/c++不同了,java是一个百分之百的向对象的程序设计语言,在java程序中,程序必须以类的形式存在,而类也是java程序的最小单位,在java中程序不允许可执行性的语句,方法等成分独立存在,所用的程序部分必须放在类定义里。而我们的c/c++是允许有可执行性的语句存在的。通过这点可以很明白的了解java的特性,就是一个纯粹的面向对象的程序设计语言了。我有点小激动了!呵呵!下面的例子一个所有的书的入门的java例子和c/c++的两个入门例子:

//java

public class Test
{
  public static void main(String[] args)
  {
   System.out.println("Hello World!");
  }
  
}

//c++
#include <iostream>
using namespace std;

int main()
{
 cout<<"hello"<<endl;
return 0;
}

//c
#incldue <stdio.h>

int main()
{
 printf("Hello\n");
return 0;
}

1.由上面的可以看到,小小的一个入门例子就体现了java都是以类的形式来表现的,可见其面向对象纯度有多高.

2.java和c/c++有一个共同点就是程序的入口都是以main来当入口函数的。

三、java源文件的命名规则(以VC/VS/BCB C);

   c/c++中的头文件的后缀是*.h,源文件的后缀是*.cpp,而且两文件的名字可以不同,而java有些不同了:

在java后缀名是*.java,而源文件的命名也不是和c/c++有所不同,比如在我在c/c++中定义了一个类,而这个类的名字是“Student"在保存这个文件的时候可以不用以这个名字来命名

这个文件,但是java就不同了,必须如要和public类,则该源文件的主文件名必须与public类(也就是该定义使用了public关键字修饰)的类名相同;由java的这个特性所以我们在写

java程序的时候一个Java源文件里最多只能定义一个public类。当然在一个类中没有定义public类,则这个文件名就可以随意的命名,虽然是随便但是还是不要起一些乱七八糟的名字

起的这个名字起码能保证看到这个名字我们就应该知道这个源文件是做什么用的。

                      说明:

                                  一个java源文件可以包含多个类的定义,但最多只能包含一个public类的定义;如果java源文件里包含public类的定义,则该源文件的文件名必须与这个Public类的类名相同;

四、java的大小写问题;

    关于这点和c/c++是一样的,是区分大小写的,没有什么好解释的;

五、关于java的垃圾回收机制;

      关于这点,c/c++中是没有垃圾回收这个功能的,为什么没有呢?因为c/c++是一种效率和语句非常精炼的语言,如果c/c++中有垃圾回收机制的话,就会产生多余的运行时代码,这势必会给程序

的效率造成一定的影响,再者c/c++语言是一种非常灵活的语言,如果c/c++有了垃圾回收机制就会影响其灵活性,通过上面我所知道的几点,所以c/c++是没有垃圾回收机制的;

     上面我只说了c/c++没有垃圾回收机制的好处差点都忘记了说没有垃圾回收机制带来的坏处,坏处基本上就有两点:

                    1.程序忘记及时回收无用的内存,从而导致内存泄漏,降低了系统的性能;

                    2.程序错误地回收程序的核心类库的内存,从而导致系统崩溃;

  在java中是不需要程序员直接控制内存回收的,java程序的内存分配和内存的回收都是由一个叫做JRE的在后台默默的为我们自动的进行着。JRE会负责回收那些不再使用的内存,这种机制我们可以称之为

垃圾回收机制;简称GC.通常JRE会在后台提供一个线程来进行检测和控制{通过这点可以看到c/c++没有垃圾回收的好处!如果在程序中没有需要回收的内存那么,这个垃圾回收无疑是占用了多余的内存!和

CPU的时间片段!}一般都是在cpu空闲或内存不足时自动进行垃圾回收,而程序员无法精确控制垃圾回收的时间和顺序的;

      java的堆内存是一个运行时数据区,用以保存类的实例,java虚拟机(JVM)的堆内存中存储着正在运行的应用程序所建立的所有对象,这些对象不需要程序员通过显示的释放,一般来说,堆内存的回收是由垃圾回收来负责的,所有的JVM实现都有一个垃圾垃圾回收算法来实现内存资源的自动回收功能。

     垃圾回收的几个特点:

      1.垃圾回收机制的工作目标是回收无用对象的内存空间,这些内存空间都是JVM堆内存里空间,垃圾回收只能回收内存资源,对其他物理资源,如数据库连接、磁盘I/O等资源等资源是无能为力的;

     2.为了更快的让垃圾回收机制回收那些不再使用的对象,可以将该对象的引用变量设置为null,通这种方式暗示垃圾回收机制可以回收可以收回该对象了!

     3.垃圾回收的精确性包括两方面:

                           1)垃圾回收机制精确的标记活着的对象;

                           2)垃圾回收机制精确的定位对象之间的引用关系。前者是完全回收所有废弃对象的前提,否则就可能造成内存泄漏;后者则实现归并和复制等算法的必要条件,通过引用关系可以保证所有对象都能被

                                可靠的回收,所有对象能被重新分配,从而有效有的减少内存碎片的产生;

      4.垃圾回收的发生的不可预知性:

                                       由于不同的JVM采用了不同的垃圾回收机制和不同的垃圾回收算法,因为它有可能是定时发生、有可能当CPU空闲时发生、主和垃圾回收实现机制的选择及具体的设置是有关系的。

                                       程序员可能通过使用finalize()方法或System。gc()等方法来建议系统进行垃圾回收,但是这种调用只是建议,依然不能精确的控制垃圾回收机制;

注意:

         在写java程序时,一个基本原则是:对于不需要的对象,不要引用他们。如果保持对这些对象的引用,垃圾回收机制暂时不会回收该对象,则会导致系统可用内存越来越少;当系统可用内存越来越少时,垃圾回收

        执行的频率越来越高,从而导致系统性能下降;

   六、最后一点;对于编写java程序用什么样的IDE来编写;

                         这里我就建议使用notepad就可以了,如果觉的不爽的话, 你可以想想我们学C/C++时我们用的Trubo C是怎么过来的!呵呵!工具不是最重要的,重要的是我们能从中学到东西!

原文地址:https://www.cnblogs.com/flay/p/2742565.html