文章目录
  1. 1. 一个简单的java应用程序
  2. 2. 注释
  3. 3. 数据类型
  4. 4. 变量
  5. 5. 运算符
  6. 6. 输入输出

一个简单的java应用程序

  1. 编译源代码之后就会得到包含这个类字节码的文件。
  2. main方法必须声明为public,而且必须有一个外壳类。
  3. object.method(parameters) 这等价于函数调用。

注释

  1. //
  2. 以/*开始,以/结尾。这种注释可以自动生成文档。
  3. / / 注意这种注释不能嵌套。

数据类型

java是一种强类型语言。一共有8种基本数据类型:int(4字节),short(2字节),long(8字节),byte(1字节),float,double,char,boolean。但java有一个能够表示任意精度的算术包—big number。在java中,整型范围与运行java代码的机器无关。java没有任何无符号类型!!!
表示溢出和出错情况的三种浮点数值:

  1. 正无穷大 Double.POSITIVE_INFINITY
  2. 负无穷大 Double.NEGATIVE_INFINITY
  3. NaN(不是一个数字) Double.NaN

变量

声明一个变量之后,必须用赋值语句对变量进行显示初始化,千万不要使用未初始化的变量。在java中,不区分变量的声明与定义。

关键字final指示常量,关键字static final 指示一个类常量。

运算符

整数被0除将会产生一个异常那个,而浮点数被0除将会得到无穷大或NaN结果。

&&和||是按照短路方式求值的。可以避免一些错误发生:
x!=0&&1/x>x+y //no division by 0

&和|应用于布尔值,得到的结果也是布尔值。

<<和>>运算符求值简单算法:

8<<1 8*2^1=16

8<<n 8*2^n

8>>1 8/2^1=4

8>>n 8/2^n 取商 余数不要

注意:若n为int类型,则要先进行模32处理(n%32) 若n为long类型,则要先进行模64处理(n%64)

输入输出

先来看一个简单的例子:

import java.io.Console;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException{
        Scanner in=new Scanner(System.in);
        System.out.println("what's your name?");
        String name=in.next();
        System.out.println(name);
    }
}

想要通过控制台进行输入,首先需要构造一个Scanner对象,并与标准输入流System.in相关联。

因为输入可见,所以Scanner不适合用于密码输入,这里可以使用Console类来实现。

import java.io.Console;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException{
        Console con=System.console();
        if (con != null) { // 判断是否有控制台的使用权
             String user = new String(con.readLine("Enter username:")); // 读取整行字符
             String pwd = new String(con.readPassword("Enter passowrd:")); // 读取密码,输入时不显示
             con.printf("Username is: " + user + " "); // 显示用户名
             con.printf("Password is: " + pwd + " "); // 显示密码
             } else {
             System.out.println("Console is unavailable."); // 提示无控制台使用权限
            }
    }
}

java.io.Console 只能用在标准输入、输出流未被重定向的原始控制台中使用,在 Eclipse 或者其他 IDE 的控制台是用不了的。

java程序无法获得Console实例是因为JVM不是在命令行中被调用的或者输入输出被重定向了。

Scanner还可以直接扫描文件。

import java.io.Console;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) throws IOException{
        double sum=0.0;
        int count=0;
        FileWriter fout=new FileWriter("text.txt");
        fout.write("2 2.2 3 3.3 4 4.5 done");//往文件里写入这一字符串
        fout.close();
        FileReader fin=new FileReader("text.txt");
        Scanner scanner=new Scanner(fin);//注意这里的参数是FileReader类型的fin
        while(scanner.hasNext()){//如果有内容
            if(scanner.hasNextDouble()){//如果是数字
            sum=sum+scanner.nextDouble();
            count++;
                }else{
                String str=scanner.next();
                if(str.equals("done")){
                break;
                    }else{
                    System.out.println("文件格式错误!");
                    return;
                    }
            }
        }
        fin.close();
        System.out.println("文件中数据的平均数是:"+sum/count);

    }
}

结果输出文件中数据的平均数是:3.1666666666666665

这段程序的功能是将”2 2.2 3 3.3 4 4.5 done”写入文件scanner读取文件中的数直到done结束。并求出数字的平均值,比较有意思的是scanner会自动一空格作为分割符区分不同数字。当然也可以通过scanner.useDelimiter(Pattern pattern)来设置不同的分割符,比如 scanner.useDelimiter(“,*”);

文章目录
  1. 1. 一个简单的java应用程序
  2. 2. 注释
  3. 3. 数据类型
  4. 4. 变量
  5. 5. 运算符
  6. 6. 输入输出