Java基础

57 阅读5分钟

1、数据类型

整数类型:

byte1 个字节范围:-128~127
short2个字节范围:-32768~32767 (短整型)
int4个字节范围:-2147483648~2147483647
long8个字节范围:-9223372936854775808~9223372936854775807

浮点型:

float4个字节
double8个字节

字符类型:

char2个字节

Boolean类型:

1个字节,其值只有truefalse

2、三元运算符

int a = 4;
String name =  a == 4 ?  "chen" :"123";
System.out.println(name);

3、javaDoc生成文档

javaDoc 命令是用来生成自己的API文档的

参数信息:
- @author 作者名
- @version 版本号
- @since 指明需要最早使用的jdk版本
- @param 参数名
- @return 返回值情况
- @throws 异常抛出情况

命令行运行:javadoc -encoding UTF-8 -charset UTF-8 .\doc.java
以上会默认在当前目录生成一堆内容,其中index.html里面就会详细记载当前接口内容。

4、Scanner用户交互

基本语法:

import java.util.Scanner;

Scanner s = new Scanner(System.in);

//通过 Scanner 类的 next() 和 nextLine() 方法获取输入的字符串,在读取前我们一般需要使用 hasNext() 与 HasNextLine() 判断是否还有输入的数据。
  • next():

    • 1、一定要读取到有效字符后才能结束输入
    • 2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉
    • 3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
    • 4、next() 不能得到带有空格的字符串
  • nextLine():

    • 1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
    • 2、可以得到空白。
package Demos_scanner;

import java.util.Scanner;
import java.util.concurrent.TransferQueue;

public class demo1 {

    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        System.out.println("开始:");
        String a1 = s.next();
        System.out.println("a1>"+a1);
        String sttr = s.next();
        System.out.println("用户输入的内容:"+sttr);
        while (s.hasNext()){
            String ddd = s.next();
            System.out.println("客户输入的下一行内容:"+ddd);
            if ("end".equals(ddd)){
                break;
            }
        }
        // 以上方法 用户输入以空格为分割,下面使用nextLine
        while (s.hasNextLine()){
            String li = s.nextLine();
            System.out.println("nextLine 内容:"+li);
            if ("end".equals(li)){
                break;
            }
        }

        System.out.println("scanner的其他用法");
        // scanner 的其他用法
        if (s.hasNextInt()){
            int i = s.nextInt();
            System.out.println("输入的整数:"+i);
        }else if (s.hasNextFloat()){
            float f = s.nextFloat();
            System.out.println("输入的浮点数:"+f);
        }else {
            System.out.println("你输入的是个啥?");
        }
        // 关闭io流
        s.close();
    }
}

5、流程控制

DoWhile:

// do...while 循环和 while 循环相似,不同的是,do...while 循环至少会执行一次。
public static void main(String[] args) {
        int i = 1;
        int sum = 0;
        do {
            sum += i;
            i++;
        }while (false);
        System.out.println(sum);
    }

// 上面的结果是1,说明,while 的条件不管是否成立,do 里面的内容最少会被执行一次。

For 循环:

// 这个是其中一种方式,叫增强for循环,主要用来遍历数组.
public static void main(String[] args) {
        String[] names = new String[]{"123","defs","ffsdfs"};
        System.out.println(Arrays.toString(names));

        for (String name:names){
            System.out.println("name>"+name);
        }
    }

关键字:

  • break 结束循环
  • continue 跳出当前循环,进入下一个循环
  • goto ...

6、方法

  • 方法设计的原则:方法就是实现某个功能的语句块的集合,设计方法的时候,最好保持方法的原子性。
  • 方法的命名规则:首字母小写,驼峰体:chekFunction
  • 类的命名:首字母大写。

重载: 重载就是在一个类中,有相同的函数名称,但形参不同的函数。

  • 方法名必须相同
  • 参数必须不同或参数的位置不同
  • 返回值可以相同也可以不同。

如果要运行一个java文件,一定要找到包的路径:java.com.Demos.method.Demo

7、可变参数

  • jdk1.5开始,Java支持传递同类型的可变参数给一个方法。
  • 在方法声明中,在指定参数类型后加一个省略号(...)
  • 一个方法只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
package Demos_func;

public class Demo1 {
    public static void main(String[] args) {
        Demo1  dd = new Demo1();
        dd.printaaa(11,"dsfaf","fsfsdfsd","sdgdgadfdsf");
    }

    public void printaaa(int a,String... names){
        System.out.println("a>"+a);
        for (String x:names){
            System.out.println(">>"+x);
        }
    }
}

8、堆栈方法区

堆: 存放值

  • 存放 new 的对象和数组
  • 可以被所有的线程共享,不会存放别的对象引用

栈: 存放变量

  • 存放基本变量类型(会包含这个基本类型的具体数值)
  • 引用对象的变量(会存放这个引用在堆里面的具体地址)

方法区(实际也是堆):

  • 可以被所有的线程共享
  • 包含了所有的class 和 static 变量

9、数组

  • 其长度是确定的,一旦被创建,大小就是不可改变。
  • 其元素必须是相同类型,不允许出现混合类型
  • 数组中的元素可以是任何数据类型,包括基本类型和引用类型
  • 数组变量属于引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量;
  • 数组本身就是对象,Java中的对象是在堆中的,因此数组无论保存原始类型还是其他对象类型,数组对象本身是在堆中的。

数组声明与创建:

package Demos_array;

import java.util.Arrays;

public class Demo1 {
    public static void main(String[] args) {
        // 除了基本的8大类型,其他都是引用。
        // 静态初始化:创建 + 赋值
        int[] nums = {1,2,3,4,5,6,7};
        // 动态初始化:包含默认初始化
        int[] nums2 = new int[5]; // 声明一个整型数组,长度为5,默认每个元素是0,通过下标修改元素。
        nums2[0] = 1;
        System.out.println(Arrays.toString(nums2));
        System.out.println("============================");

        String[] names = new String[5]; // 声明一个整型数组,长度为5,默认每个元素是 null,通过下标修改元素。
        System.out.println(Arrays.toString(names));

        Object[] names2 = {new Demo1(),new Demo1()};
        System.out.println(Arrays.toString(names2));
    }
}

10、时间戳

在Java程序中,时间戳通常是用long表示的毫秒数,即:

long t = 1574208900123L;

转换成北京时间就是2019-11-20T8:15:00.123。要获取当前时间戳,可以使用System.currentTimeMillis(),这是Java程序获取时间戳最常用的方法。

注意ISO 8601规定的日期和时间分隔符是T。标准格式如下:

  • 日期:yyyy-MM-dd
  • 时间:HH:mm:ss
  • 带毫秒的时间:HH:mm:ss.SSS
  • 日期和时间:yyyy-MM-dd’T’HH:mm:ss
  • 带毫秒的日期和时间:yyyy-MM-dd’T’HH:mm:ss.SSS