Java学习笔记一--从hello world开始

 

1、 从hello world开始的Java—jdk编译,第一个Java程序

2、 IDE—eclipse建立工程和几个小技巧

3、 Java Structure – Java程序的结构 举例

4、 对象—创建对象和调用对象


从hello world开始的Java

首先要有Java的编译器,也就是Javajdk,并且得把相应的路径配置好(这个问题非常多的博客解释的比较清楚,这里不赘述)

在没有IDE的环境下也可以编写并运行简单的Java程序

 

打开记事本,写上

public class HelloWorldApp {
  public static void main(String[] args){
    System.out.println("HelloWorld!"); //Display the string.
  }
}

 

注意的是,这个记事本的名字必须和这个类的名字一样,也就是HelloWorldApp,大小写都得完全一样,否则是报错的, 并且保存成HelloWorldApp.java的格式,而不是原来的.txt

然后打开命令行(cmd)

输入javac HelloWorldApp.java 进行编译,会生成一个.class文件

然后接着输入 java HelloWorldApp  来运行这个生成的.claa文件注意不加后缀的

然后就会在命令行发现多了一行 Hello World了表示运行成功

 

注意的是,要放在合适的位置,不然要调整到你那个记事本的文件夹下才行,我因为懒直接把HelloWorldApp保存在了Administrator 里……

 

IDE


不多说 eclipse的大名应该是听过的吧……

如果发现下载的奇慢或者总是下载不完整就结束下载了,那推荐自己找梯子去……

 

注意版本要下的跟自己的jdk一致才行,比如都是32位或者64位,不然就比较尴尬

 

一般第一次的页面里会有一个选项是CreanteHelloWorldApplication, 跟着她的操作一步步来就可以很快熟悉如何建立一个Java工程了

然后就可以在建一个,把下面给出的student类写一写试一下了

 

另外分享一点跟eclipse有关的小干货:

--换字体的话,Windows-> Prefernces->直接搜索font 然后在Basic里会有最后一个Textfont,然后 edit就可以了

--Windows-> perspective 里面有Reset可以一件恢复到原始的视图,我比较喜欢project的视图在左边而不是上边,直接拖边框就可以了,如果显示不让移动的小红圈,说明你想移动的终点位置不是很合法……

--还有 快速复制一行的 把光标停在一行 Ctrl+Alt+down可以在下面快速复制一行, Ctrl+Alt+Up可以在上面快速复制一行

-- 把光标停在某一个变量处按 Ctrl+1会出现很多选项,比如里面有很实用的自动生成get set函数~

 

Java Structure

 

  package   所谓的Java包 0个或者1个 在程序最前面

  import  在所有的类前面 有点类似c++的include

  public class definition 0个或一个 唯一的公共类,名字要和文件名一样,可以放main函数的

  name class definition 0 或多个 普通类 不能放main的那种

  interface definition 接口 可以有0个或者多个

 

•    Example:

•       package project.gui.view;

•       import java.util.Calendar;

•       import java.awt.*;

•       import java awt.event.*;

•       import mywork.form;

•       public classButtonExample{…}

•       class A{…}

•       class B{…}       ……

•       interface  ButtonInterface{…} ……

 

Java一般有两种类,一种是定义类的(Program class);另一种是测试类(runner clas),一般包含main函数

注意 一个源程序中可以声明多个类,但是只能有一个公共类,这个类里才可以有main函数

 

具体到一个program class里面的结构,就跟C++非常像了。

Public class classname

{

       声明常量和变量

       构造函数

       函数方法

}

如果是runner class,只不过里面是main函数

插一个例子:

//一个 program class

public classStudent {

   public Stringname;

   public char sex;

   public Stringbirthday;

   private int compScore,engScore;

   public Student(Stringstr1,charch,String str2){

      name=str1;

      sex=ch;

      birthday=str2

   } 

   public void setCompScore(intdata){

      compScore=data;

   }

   public int getCompScore(){

      return compScore

   }

   public int getEngScore() {

      return engScore;

   }

   public void setEngScore(intengScore) {

      this.engScore =engScore;

   }

   public String toString()

   {

      return "Name "+name+";Sex "+sex+";Birthday "+birthday;

   }

  

}

 

//注意Java输出的时候可以用+ 表示连接两个输出

 

一个runner class

import java.awt.*;

public class TestStudent{

   public static void main(String args[]){

     Student stu1=new Student("Mary",'M',"1990.8.8");

       System.out.println(stu1.toString());

       stu1.birthday="1990.7.9";

       System.out.println(stu1.toString());

       stu1.setCompScore(98);

       stu1.setEngScore(82);

       System.out.println("计算机成绩:"+stu1.getCompScore());

       System.out.println("英语成绩:"+stu1.getEngScore());

       System.out.println("平均成绩:"+stu1.getAverScore());

       System.out.println("单科最高分:"+stu1.getMaxScore());      

       }     

}

//将这两个类放在同一个project里面,如果是用的 eclipse的话,就可以run as application、、//来看结果了

 

 

Java创建对象

 其实已经可以从上面的代码中发现,跟c++是几乎一样的,在Student stu1 = new Student(“”,””,””)的过程中,调用了Student类里面的构造函数; 这里想多说的是,如果原来没有自己定义构造函数的话,系统会有默认的无参数的构造函数,不过一旦声明了,就不在自动生成了,所以其实还是显式的写出默认构造函数的好,以防报错

 

 

 

关于对象的调用

可以从上面的例子里看到,跟C++非常像的,也是用‘.’来调用里面的公共的变量和方法,C++是可以有->的,但是Java没有指针,所以只会是’.’,但其实这是引用

 

 

Java语法

这个在我转自一个知乎回答里,非常详细的说了java和C++语法的不同相同之处

其中比较需要注意的是java里的局部变量必须初始化; String是个类,得大写别忘了;Array的用法,[]可以放前面 ; 还有bool -> Boolean

 

想说一下变量和范围的问题,Instance variable也就是类里面一开始的一些成员变量,这些是可以自动初始化的,但是局部变量必须显式的初始化之后才行,不然报错;然后同一个范围内也是不能同一个变量名声明两遍的,比如

{Int I = 1;

{int I = 2}

}这样是不行的

 

然后在重点说一下数组的问题:

Int [] A = {1,2,3};

 int A[]= {1,2,3};

 int[]A = new int[3];A[0]=1;A[1]=2;A[2]=3;

这三种都是可以的,而且前面这个[]是不能有数字的。简单数据类型的数组基本就是这样,也可以声明复合类型的变量,没什么很大的区别。比如前面的Student类:

Student[] stu = newStudent[3];

Stu[0]=newStudent(“”,””,””);

Stu[1] = new Student()…

感觉跟二维的比较像。 同理 Student [] stu = {newStuden(…), new Student(…)};也是可以的

其实用new分配内存后,会自动初始化数组里所有的数据元素

 

二维数组的话:

Int [][] arr = new int[4][];

Arr[0] = new int[5];。。。 注意到[][]两个方括号,给出前面的数字的情况下才能给出后面的, int [][]arr =new int[][5]是不合法的; int arr[][] = new int[2][3];是可以的;还是一样的,等式左边这个[][]是都不能写的

 

有个与c++不一样的是, 数组里有专门的Length可以给出数组的长度

Int [][] b = new [3]; b[1] = new int[2];

b.length==3 b[1].length = 2;

 

还值得一提的是一种简便的遍历数组的方法:

public staticvoidmain(String[] args){

      // TODO Auto-generated method stub

      int [] list = new int[5];

      for(inti = 0; i<list.length;i++)

         list[i] =i+2;

      for(intelement:list)

         System.out.println(element);

   }

加黄的部分,element不是关键词,可以换成别的, 格式就是type name: array_name,这样就可以迭代了

 

不能随便的resize一个数组的,不过可以这样:

Int []b = new int[6];

B = new int[10];

 

还有一个System.arraycopy()将一个数组复制到另一个数组

举个栗子:

public staticvoidmain(String[] args){

      int elements[ ] = { 1, 2, 3, 4, 5, 6};

      // 增大后的新数组

      int hold[ ] = {10, 9, 8, 7, 6,5, 4, 3, 2, 1 };

      // elements数组中的所有元素复制到

      // hold数组中,下标从0开始

      System.arraycopy(elements, 0,hold, 0, elements.length);

      for(inti=0;i<elements.length;i++)

         System.out.println

                ("elements["+i+"]="+elements[i]);

      for(inti=0;i<hold.length;i++)

         System.out.println("hold["+i+"]="+hold[i]);

 

   }

输出为:

elements[0]=1

elements[1]=2

elements[2]=3

elements[3]=4

elements[4]=5

elements[5]=6

hold[0]=1

hold[1]=2

hold[2]=3

hold[3]=4

hold[4]=5

hold[5]=6

hold[6]=4

hold[7]=3

hold[8]=2

hold[9]=1

 

System.arraycopy(elements, 0, hold, 0, elements.length);这句中第一个0不能改否则不能编译,表示从elements的第0个开始复制,第二个0可以改,表示从hold里第几个开始改变,最后一个也可以改,表示复制几个元素,注意到跟c++里面stirng的复制不太一样,会覆盖掉之前的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值