先分享下我学习java的方法....
        无论是书和视频还是面授,别人都喜欢先把知识用生活中的案例进行描述,最后做个结论,然后再结合代码进行知识的传授。那么我们在学习的时候就应该把思维跟进到生活的案例中,如果懂了最好,不懂就听最后的结论看能不能听懂,但是无论懂不懂都应该把最总的结论记录到笔记中,如果没懂,请把没有懂得地方做个记录,变成别人能听懂的问题向讲师或者论坛贴吧发问。最后当看到代码的时候,除了根据他人的思路去看代码外,还应该向自己多问几个问题,这个代码是怎么执行的(执行流程),效果是怎样的。如果代码有不懂的地方,请提问"这句代码是什么意思?","这句代码是通过什么来调用的?","这个代码只能这么写吗?","这个代码我用到其他地方会不会可能报错?"。那么这些都是一些真实有用的方法。
  最后总结一下,自学或者培训的方法就是。多敲代码,多敲代码,多敲代码,记笔记,记笔记,记笔记,提问,提问,提问,联想,联想,联想
        做到这几点,学起java才不会感觉特别累。
        那么,二楼上干货

解决方案 »

  1.   

          第一章:第一个JAVA程序--HelloWorld
          
           代码:
    public class Hello World {
              public  static void main(String[] args){
                      System.out.println("Hello World!!");
              }
    }
          首先对于零基础的人来说,上述代码会问到的问题很多。归纳为下面几个
              1.上述代码编写在哪里(使用什么软件工具进行编写)
              2.上述代码怎么运行(个人理解为JAVA代码的运行机制)
              3.运行上述代码需要什么准备(个人理解为JAVA运行环境--JDK/JRE/JVM)
              4.上述代码完全看不懂(干货了)
          那么,针对上述问题,需要解答的或者相关的东西太多,我分楼解答      
      

  2.   

         对应第一行代码中的  Hello World  我这里把这两个单词分开的,正确是不能分开的应该链接在一起,HelloWorld 这算一个整体而不是两个单词,后面再解释这个为何应该这么做,或者规范应该怎么做
      

  3.   

    干Java快3年了,火速前排留个名
      

  4.   

    现在解决第一个问题,代码在那个软件编写。有很多初学者可能会有疑问,你们搞java开发的,到底用什么软件。那么,我说下。现在市场流行的软件主要是eclipse和MyEclipse两个。如果你现在就准备去查查这两个软件,我劝你先等等。因为这两款都不适合初学者,初学者适合什么呢?
        记事本或者editplus,记住用他们就好,如果你问我到底用哪个,那么给个建议,前三天使用记事本,后面都用editplus,等我告诉你什么时候可以用eclipse了再用。editplus我晚点会发个安装和配置教程
      

  5.   

        现在来解答第二个问题,代码怎么运行。运行机制。
        java代码是写在后缀为.java的文件中的,那么可以直接运行这个.java文件吗?是不行的,不能直接运行.java文件。而我们的java文件想要运行,必须经过一次处理---->编译。当java文件经过编译后,会在同目录生成一个.class文件,文件名一样。比如:Test.java经过编译后会生成一个Test.class文件,而这个Test.calss文件才是可以运行的。
       可以这么理解,java文件只是提供给程序猿编写和观看的,而电脑并不认识,那么把程序猿能看懂的Java文件进行编译后,电脑就能认识了,并且可以去执行它。但是我们程序猿又不认识了...
        如下图:
      

  6.   

        在上述中涉及到两个操作,一个是编译,一个是运行。这在java中是有对应命令的。这个等我回答完第三个问再来解释。
       第三个问题:运行代码的准备,JVM/JRE/JDK
       这三个是什么东西呢?
       首先要知道,java程序是可以跨平台的。什么叫跨平台呢?就是同一个java程序可以在多个操作系统下运行。
    如下图所示
    但是,在这里大家需要知道,我们的java程序就是java代码,而java代码并不能执行,能执行的是class文件。那么也就是说class文件可以在多个平台下运行?不是的,,class文件不能跨平台,之所以说java程序跨平台的原因是因为一份程序猿能看懂的java文件,可以在不同平台中用不同的编译器,编译成不同版本的class文件,最终平台只会执行它能读懂的class文件,如下图
       这才是java程序的跨平台原理。记住一句话,java程序能够跨平台,但是编译器也就是JVM不能跨平台。
       那么JVM到底是什么呢?大家可以理解为,用其他底层语言(比如C和汇编)来写的可以读懂和检查java代码的程序。
        JVM也是我们熟知的JAVA虚拟机
       总结:
           1,安装应用软件需要考虑操作系统的的兼容性,不同操作系统需要的版本是不同的,那么一个应用要在不同的操作系统中运行,需要开发不同的版本。增加了工作量和成本。
    2,有没有一种方法能实现只需一个版本,在不同的操作系统下都能运行呢?
    3,JAVA的JVM(虚拟的电脑)-也是一个软件,给我们提供了这样一种便利。但是JVM不是跨平台的。
    4,需要给不同的操作系统开发不同的JVM,java程序运行在JVM当中,就实现了跨平台的原理。
                  那么我们怎么安装JVM呢?既然是一个程序那么就是可以安装的,请稍等,再来看看JVM与JRE和JDK之间的关系
           我们的JAVA程序需要用到java底层内部的一些类库,比如HelloWorld案例中的String、System,以及修饰符public static等等,那么这些东西属于java本身的,它放在了什么地方?我们JVM去编译和执行java程序时怎么去访问?
          这些类库放的地方是JRE中,我们的JRE也属于一个软件,不过严格来说应该属于安装型的一个放有基本类库和JVM的仓库。我们也熟称运行环境。
         那么也就是说:JRE中包含了JVM和基本类库----JRE=JVM+基本类库。
         松了一口气,终于知道我们该安装什么了。但是事实告诉你,如果你只需要运行java程序可以安装JRE,如果你是开发者,那么JRE还不能满足我们。
        因为开发中还会经常使用到一些开发工具,比如文档工具,编译工具,运行工具等等。那么这些东西存在与那里呢?
        JDK(严格说是JDK安装目录下bin目录中),JDK包含JRE和开发工具。那么也就是说JDK==JRE+开发工具。
        JVM、JRE、JDK他们的关系就是如下图
        总结下:
        JVM = java虚拟机  java软件运行其中
        JRE = java运行环境包括 JVM 和其它的类库
        JDK = JRE 和一些开发工具(bin目录下) 
      
      

  7.   


    了解了JVM,JRE,JDK后能回答第二题了。java代码是怎么编译和运行的。
      编译:通过bin目录下的javac.exe进行--->cmd命令为:cd  java文件目录--->javac  Test.java
      运行:cmd命令为-->java  Test在执行这些命令前需要安装JDK并配置好环境变量,安装JDK(不需要安装JRE,JDK中就包含了JRE),环境变量怎么配置都行,配置好之后在cmd命令中输入java能出来东西就成。具体配置方法就不细讲,百度很多图片说明。
       解释下javac和java命令。javac属于编译,编译的是java文件,那么javac后跟上的是带后缀的文件名。而java是执行命令,执行的是代码,所有后面跟的不是文件,而是文件中的类名,也就是代码 class后的单词 。
      public  class   A{ }
     这个格式是定义一个类,类名叫A,什么叫类?目前可以理解为写代码的地方 
      这里需要注意一点,假如我A.java文件中的代码为
     public  class   A{ }
    那么编译后的class文件名就是A.class
    如果A.java文件中的代码为
     public  class   B{ }
    那么编译后的class文件名就是B.class
    说明编译时,是以类为单位和核心进行编译的。如果一个java文件中有
     public  class   A{ }

     public  class   B{ }
    两个类,那么编译后会生成两个文件A.class和B.class
      

  8.   

      fuck  为什么只会回复3次
         接下来讲解代码
    public class HelloWorld {
              public  static void main(String[] args){
                      System.out.println("Hello World!!");
              }
    }
           public class HelloWorld{
           }
    这是一个整体,作用是申明一个类。虽然一个程序的最小单元是一条线程,但是java程序的最小单元可以理解为一个类,如果一个java程序连一个类都没有,那么就可以理解为一个错误的代码。
         class是java中的一个关键字,作用是用来申明类和描述字节码文件(.class编译型文件)。HelloWorld代表的是一个类名,只是单词有点意义,本身意义不打。比如人的名字一样,作为一个代号存在,本身并没有多大意义。可以替换为Test、A、B
         public 在这个申明语句中是个重点。public本来是访问权限修饰符,后面具体详细解释。public用在类的申明中有点特殊。哪里特殊呢?
         1.使用public修饰的类,文件名(.java文件)和类名必须保持一致。
          2.public修饰的类在一个java文件中最多只能存在一个,最少可一个类都不使用public修饰
       所以上述说HelloWorld可以替换为Test,A,B需要多做一件事,因为public class  HelloWorld只能存在于HelloWorld.java文件中,如果想改类名,要么更换.java的文件名,要么删除public修饰符。
         public  static  void main(String[]  args){}这个是主方法,我们称之为程序的入口,因为JVM底层再调用这个方法。
    所以 public static void就可以把他们看成一个整体了,必须满足这样的格式,才算是一个主方法。这个整体简单描述下,这里的public就只是简单的权限修饰符了,static代表静态的,底层直接使用类名来调用而不是对象,这里也不做多解释。记住这么写就行。void为该方法的返回值类型,void代表空,意思是这个方法不返回任何数据。main跟类名一样只是一个代号。但是如果是主方法的话,mian就不能更换,因为JVM只认main为主方法,当然不仅仅是main这个能代表的。String[]代表一个数组类型,后面解释,记住这么写就行。args只是一个参数名,如果把String[]比作一个装水的杯子。那么args就是这个杯子的名字,就是"杯子"这个名字,或者你比较时尚的话可以给这个杯子取个名字,比如"宝贝儿",那么这里的args就是"宝贝儿"。跟类名,main-方法名一样只是代号。
         那么public static void main(String[] 宝贝儿){}就是一个主方法,args既然是代号就可以任意替换,main不行,底层只认这个单词。
    public static void main(String[] 宝贝儿){}这个整体就是主方法了,整体,切记,出了agrs可以任意替换外,其他换一种写法这个整体就不是主方法了,也不是程序的入口了。程序没了入口就运行不起来了。
         所以,英语差的写10遍吧~~~~
         上述的public static可以任意调换位子,String[]  args可以写成String  args[] 都是可以的,都算主方法,但是不推荐这么做。不推荐的意思就是谁用谁傻X  大家都不这么用,你这么用并不能显示你的特殊,只能得到别人对你的歧视,记住这句话,java中有或者任何一门语言都有他自己的规范,你不这么写才是对的。你不这么写就算不报错,也会与一大堆人来说你,说不定还会得罪人或者领导...相信我说的没错~~   
      

  9.   

          好吧 今天就到这里  起码能写个HelloWorld也不错了,只是有些东西如果真对于一个零基础来说可能理解起来就那么一点点难度。特别是不会单词,看不懂术语的。我提供一个群号534993893给大家交流,如果不懂得可以讨论或者问我。
         明天发变量和数据类型的,嗯就这样
      

  10.   

    jvm可不是编译器,"一次编译,到处运行"到你这就不行了。
      

  11.   

    正在学习java ,一下。
      

  12.   

    不知道你有没有试过。我用64位JDK编译的项目放在32JDK环境里就报JDK版本错误,所以我才这么理解的,也许我理解得不太到位吧
      

  13.   

    Mark......................................
      

  14.   

    不知道你有没有试过。我用64位JDK编译的项目放在32JDK环境里就报JDK版本错误,所以我才这么理解的,也许我理解得不太到位吧
    我记得如果jdk和eclipse版本不一致,eclipse就起不来。32位和64位好像确实有冲突,但是linux应该不是。我记得我在win系统下编译了JavaWeb项目后可以 直接发布到Linux系统中。
      

  15.   

      开始更新:变量,常量与数据类型
      将变量之前先讲个生活案例,在咱们生活当中有许多装东西的容器。比如:水杯,饭碗,茶杯,垃圾桶…..那么这些都是装东西容器,其中水杯装水、饭碗装饭、茶杯装茶、垃圾桶装垃圾。而且大家需要知道的是,我的水杯也能装茶、茶杯也能装水(但是一般情况下茶杯装水杯容量的水会满(溢)出去),饭碗只能装饭不能装垃圾,垃圾桶只能装垃圾不能装饭。当然这些事常识。那么来看看变量,变量也是容器。但是java中的变量容器装的是撒?数据,是的变量是装数据的容器,如水杯、茶杯、饭碗、垃圾桶一样都是。只是在Java中,装的东西是数据了。书中数学就学过变量,看一个表达式  y = x +2;当x=2是  y=4 ;x=3时y=5,那么在初中时x和y都是变量。
      Java中的变量也能这么使用,使用时需要先声明变量 x = 2或者x = 5.5。但是这里有点不同,跟生活案例一样,水杯装水,茶杯装茶,饭碗装饭,垃圾桶装垃圾这些容器在生产时就定义了他们装的东西。那么我们变量在声明时也需要有这么一个定义,定义这个变量装什么类型(整数还是小数还是”hello”),必须先定义装的类型。而这些类型就是java中的数据类型,数据类型包括整数类,小数类,字符型,boolean型和引用类型。那么定义变量的格式就是:
    数据类型   变量名  =  值;
    例:int  x = 5;//其中int表示整数型,x是变量的名字 5代表变量的值
    注意:而且变量一旦使用某种数据类型声明之后,类型就不可被更改。也就是说当x被int类型声明之后x就只能装数字,不能装小数(在java中整数类型和小数类型是两个大类型)、字符、boolean、引用类型。比如生活案例中的水杯被生产就定义只能装水,不能装饭和垃圾。饭碗只能装饭不能装垃圾,垃圾桶只能装垃圾不能装饭,当然这里有些新手会反驳,那么请你不要反驳,不要转牛角尖,饭碗装水也可以?在这里我们看成饭碗不能装水可好?
    总结:变量是装数据的容器,声明时必须使用数据类型进行声明,而且一旦声明该变量就只能对应类型的数据了。  
      

  16.   

         变量是装数据的容器,而且变量的重点在于变,那么上述int  x = 5;这句代码中这个x变量的值为5。而且这个x变量的值还可以被改变,比如:
          int  x = 5;//声明一个int类型(数据类型中的整数类型)的变量x并给变量赋值
          x = 10;//更改变量x的值为10。那么这个变量的值就从5变为了10。使用变量时不需要加数据类型,只有声明时才加上数据类型那么测试变量完整的代码为:Test.java文件中的代码
         public class Test{//在Test.java文件中申明一个类Test
                                      public static void main(String[] args){//主方法--程序的入口,虚拟机运行时要执行的地方
                                                int x = 5;//声明变量
                                                x = 10;//变量更改值
                                                System.out.println(x);//将值打印到控制台
                                      }
                             }
      

  17.   

        注意代码中的"//"是注释,注释就是给开发者或程序猿看得,虚拟机在编译执行时会跳过注释,"//"代表这一行后面的所有内容都被注释
        "/**/"是多行注释"/*"和"*/"中间的内容会被注释,可以换行注释或注释多行的意思。"/**  */"是文档注释,与"/**/"多行注释效果类似,区别在于文档注释可以使用jdk中javadoc.exe命令编译为固定格式的文档
      

  18.   

    我学习java的时候,直接用vim编写.从来没用过eclips.
      

  19.   

    用javac 命令编译程序,用java 命令运行程序