Java学习小结

Java学习小结:

  1. 个人觉得,学习一门编程语言,首先掌握它怎么编译运行的:
    对Java来说,控制台上
 javac 文件名;
 java  类名; (后面不要加后缀)

便是它的运行方式。

  1. 写“Hello World”
    了解感受一下这门语言的最简单的编写。

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

文件名为HelloWorld.java(必须与类名相同)

  1. 变量
    定义方式:
int a, b, c;         // 声明三个int型整数:a、 b、c
int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
byte z = 22;         // 声明并初始化 z
String s = "runoob";  // 声明并初始化字符串 s
double pi = 3.14159; // 声明了双精度浮点型变量 pi
char x = 'x';        // 声明变量 x 的值是字符 'x'。

特别重要的,理解Java中三种变量类型:

  • 类变量(又叫静态变量):方法之外,类中的变量,用 static 修饰。是属于类的变量。静态变量在第一次被访问时创建,在程序结束时销毁。有默认值。
  • 实例变量(又叫成员变量):方法之外,类中的变量,不过没有 static 修饰。是属于实例化对象的变量。实例变量在对象创建的时候创建,在对象被销毁的时候销毁。有默认值。
  • 局部变量:类的方法中的变量。是属于对象的方法的变量。在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁。无默认值。
  1. 循环结构、条件语句
    比如for循环、if{}else{}语句等,和C语言差不多,有C基础的小伙伴掌握起来应该很容易。
  2. 流(Stream)、文件(File)和IO
  3. Java面向对象编程。
    这里就不过多赘述了,想要继续学习的小伙伴推荐一个网站:菜鸟教程,很多编程语言我都是在上面学的,内容很丰富齐全,有兴趣的同学可以去上面继续学习。
最后说一说我个人学习编程语言的体会:

学习语言不是像学习数学、计算机组成原理等那些理论性强的东西,语言是要拿来用的,是实践性的东西。因此不要单单去看,最好的学习方法是自己做个项目,在项目中遇到不懂的再去查资料,理解,自己动手实践的东西理解得最深刻。

附上自己练习用的一个小项目,供大家参考:

  • Player.java
import java.io.*;
import java.util.Scanner;
import java.util.InputMismatchException;
import java.util.Date;

public class Player{
    int playerId;
    String playerName;
    BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
    Scanner inputInt = new Scanner(System.in);

    public Player() throws InputMismatchException{
	try{
	    System.out.println("请输入人物名称:");
	    String name = br1.readLine();
	    System.out.println("请输入人物ID号:");
	    int id = inputInt.nextInt();
	    this.playerId = id;
	    this.playerName = name;
	}catch(IOException e){
	    System.out.println(e.toString());
	    System.out.println("输入出现异常!");
	}catch(InputMismatchException n){
	    System.out.println("输入值必须是数值!");
	    n.printStackTrace();
	    throw new InputMismatchException();
	}
    }

    public void setPlayer(int id, String name){
	this.playerId = id;
	this.playerName = name;
	System.out.println("你好,我是你新创建的人物。");
	System.out.println("我叫:" + this.playerName);
	System.out.println("我的id号是:" + this.playerId);
    }

    protected void run(){
	System.out.println("我要跑了!");
    }

    protected void timeKeeping(){
	Date date = new Date();
	System.out.println("现在的时间是:");
	System.out.printf("%tc\n",date);
    }

    protected void fileWriter(){
	System.out.println("请输入要让我写入的文件路径及名称:");
	try{

	    /* 以下三行,先开一个文件,再用该文件开一个(输入/输出)流,再用该流开一个用于(用字符流)写入的对象。同理下面的Reader也是如此 */
	
	    /* 其中前两行可以合并成一行:FileOutputStream fos = new FileOutputStream("./a.txt",true);当然这是在直到文件路径的情况下,如果要自定义一个文件名,则必须按照下面的3段式来写,否则Java会把""里的东西当初路径来解析 */

	    File f = new File(br1.readLine());
	    FileOutputStream fos = new FileOutputStream(f,true);    //不覆盖原有内容
	    //FileOutputStream fos = new FileOutputStream("br1.readLine()",true);   //不能这样写,否则当前目录下会出现一个br1.readLine()的文件或目录
	    OutputStreamWriter osWriter = new OutputStreamWriter(fos,"UTF-8");
	    System.out.println("要写入的数据是:");
	    osWriter.append(br1.readLine());
	    System.out.println("写入完毕!请继续操作,您想让我干啥?");
	    osWriter.close();    //最后关的时候要从里到外依次关,后开的先关
	    fos.close();
	}catch(IOException e){
	    System.out.println("IO流异常!");
	    e.printStackTrace();
	}catch(Exception e){
	    System.out.println("出现异常!");
	    e.printStackTrace();
	}
    }

    protected void fileReader(){
	System.out.println("请输入要让我读取的文件路径及名称:");
	try{
	    File f = new File(br1.readLine());
	    FileInputStream fis = new FileInputStream(f);
	    InputStreamReader isReader = new InputStreamReader(fis,"UTF-8");
	    StringBuilder sb = new StringBuilder();
	    while(isReader.ready()){        //读取只能一个字符一个字符的读取 
		sb.append((char)isReader.read());
	    }
	    System.out.println("文件里的数据是:" + sb.toString());
	    System.out.println("请继续操作。您想让我干啥");
	    isReader.close();
	    fis.close();
	}catch(IOException e){
	    System.out.println("IO流异常");
	    e.printStackTrace();
	}catch(Exception e){
	    System.out.println("出现异常!");
	    e.printStackTrace();
	}
    }
}	

  • SmallGame.java
import java.util.Scanner;
import java.io.*;
import java.util.InputMismatchException;

public class SmallGame{
    public static void main(String[] args){
	System.out.println("欢迎来到小游戏!");
	System.out.println("请输入(开始/退出)游戏:");
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	try{
	    StringBuilder str = new StringBuilder (br.readLine());
	    while(true){
		if ((str.toString()).equals("开始")){
	            Player player1 = new Player();    //此时如果这个方法抛出异常,则会被下面的catch捕获,后面的语句就不会执行了。如果不catch的话,则抛出的异常会在终端上输出,但由于main函数本身没有catch异常,因此下面的语句依旧会继续执行。理解try,throw,throws,catch间的关系。而且throw、throws只能跟在方法后面,类不能抛出异常,类如果抛出异常,那理论上所有的类都能抛出异常,那最后一个类(包含main函数的)抛出的异常要由谁来接收?
	            System.out.println("请创建一个人物。");
	            player1.setPlayer(player1.playerId,player1.playerName);
		    System.out.println("您想让人物做什么?(跑/报时/读入文件/写入文件/退出游戏)");
		    label:while(true){
		        str.replace(0,str.length(),br.readLine());
		        switch (str.toString())
		        {
		            case "跑":
			        player1.run();
			        break;
		            case "报时":
			        player1.timeKeeping();
			        break;
			    case "写入文件":
				player1.fileWriter();
				break;
			    case "读入文件":
				player1.fileReader();
				break;
		            case "退出游戏":
			        break label;
			    default :
			        System.out.println("输入有误,请重新输入!");
		        }
		    }
		    player1.br1.close();
		    player1.inputInt.close();
		    System.out.println("游戏将退出!");
		    break;
	        }else if((str.toString()).equals("退出")){
		    break;
	        }else{
		    System.out.println("输入有误,请重新输入");
		    str.replace(0,str.length(),br.readLine());	//用readLine方法可以重复读取输入
		    }
	        }
	}catch(IOException e){  	//不管怎么样,有io类出现的必须catch异常
	    System.out.println("输入出现异常!");
	    e.printStackTrace();
	}catch(InputMismatchException n){
	    System.out.println("退出!");
	}finally{
	    try{
	        br.close();
	    }catch(Exception e){
		e.printStackTrace();
	    }
	}
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值