Java基础知识

起步
  • JDK Java Development Kit JAVA开发工具包 (包含以下两项)
  • JRE Java Runtime Environment JAVA运行时环境 (包含以下一项)
  • JVM Java Virtual Machine Java虚拟机 实现一次开发,到处运行
public class Hello {
    ......................
}

这里的类名是Hello,按照习惯,首字母H要大写。class用来定义一个类,public表示这个类是公开的,public、class都是Java的关键字,必须小写。

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

Hello类中定义了一个名为main的方法,一个方法除了方法名main,还有用()括起来的方法参数,这里的main方法有一个参数,参数类型是String[],参数名是args,public、static用来修饰方法,这里表示它是一个公开的静态方法,void是方法的返回类型,而花括号{}中间的就是方法的代码。
这就是Java程序的固定入口方法,因此,Java程序总是从main方法开始执行
1.一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致;
2.使用javac命令可以将.java源码编译成.class字节码;
3.使用java命令可以运行一个已编译的Java程序,参数是类名。
4.类名必须以英文字母开头,后接字母,数字和下划线的组合,习惯以大写字母开头。之后采用驼峰命名方法。
5.方法名的命名规则,首字母小写,之后是驼峰命名法。
6.Java的每一行语句必须以分号结束,根JS不一样。

IDEA技巧
创建入口的时候 psvm 快捷按键可以直接生成入口主方法。
sout 快捷键为 system.out.println()
ctrl+d  复制当前行到下一行
fori  直接生成一个for循环
alt+enter 处理错误
ctrl+h   打开继承树关系图
基本数据类型

不同的数据类型占用的字节数不一样(后面的数字是占用字符数)
整数类型:byte 1,short 2,int 4,long 8
浮点数类型:float 4,double 8
字符类型:char 2
布尔类型:boolean 1

注意:

1.对于float类型,需要加上f后缀。
float f1 = 3.14f;
float f2 = 3.14e38f; // 科学计数法表示的3.14x10^38
2.char类型使用单引号',且仅有一个字符,要和双引号"的字符串类型区分开
3.定义变量的时候,如果加上final修饰符,这个变量就变成了常量,根据习惯,常量名通常全部大写。
final double PI = 3.14; // PI是一个常量
4.在Java中,多行语句用{}括起来。很多控制语句,例如条件判断和循环,都以{ }作为它们自身的范围,也就是块级作用域。

javadoc注释

Javadoc用于描述类或者方法的作用。Javadoc可以写在类上面和方法上面。

整数运算

整数的除法结果只会是整数,小数部分被砍掉了。整数的除法对于除数为0时运行时将报错,但编译不会报错。
整数由于存在范围限制,如果计算结果超出了范围,就会产生溢出,而溢出不会出错,却会得到一个意外的结果。
自增和自减,++ --啥的,++写在前面和后面计算结果是不同的,++n表示先加1再引用n,n++表示先引用n再加1。不建议把++运算混入到常规运算中,容易自己把自己搞懵了。

类型自动转换

在运算过程中,如果参与运算的两个数类型不一致,那么计算结果为较大类型的整型。例如,short和int计算,结果总是int,原因是short首先自动被转型为int。
如果参与运算的两个数其中一个是整型一个是浮点数,那么整型可以自动提升到浮点型。

类型强制转换

强制转型,即将大范围的整数转型为小范围的整数。比如
int i = 12345;
short s = (short) i; // 12345
但是超出范围可能会出错,因为这样强制转换是直接砍掉高一部分字节。
将浮点数强制转型为整数。在转型时,浮点数的小数部分会被丢掉。如果转型后超过了整型能表示的最大范围,将返回整型的最大值。

浮点数运算

浮点数有个非常重要的特点,就是浮点数常常无法精确表示。比如0.1换算成二进制是一个无限循环小数,所以判断两个浮点数是否相等可以计算两者之差是否小于一个很小的数字即可。

布尔运算

和js没什么区别,就是&&和||存在一个短路运算

字符

在Java中,字符和字符串是两个不同的类型。这就很恶心。
字符类型char是基本数据类型,它是character的缩写。一个char保存一个Unicode字符,可以表示汉字和字母,都是占用两个字节。
要显示一个字符的Unicode编码,只需将char类型直接赋值给int类型即可:
int n1 = 'A'; // 字母“A”的Unicodde编码是65
int n2 = '中'; // 汉字“中”的Unicode编码是20013

字符串

和char类型不同,字符串类型String是引用类型,用双引号"..."表示字符串。符号的转义也是类似"。
和js一样,字符串是不可变的,但是这里字符串又是引用类型,直接赋值貌似是可变但其实只是改变了变量的指向。

数组

定义一个数组类型的变量,使用数组类型“类型[]”,例如,int[]。和单个基本类型变量不同,数组变量初始化必须使用new,以下表示创建一个可容纳5个int元素的数组。
int[] arr = new int[5];
数组所有元素初始化为默认值,整型都是0,浮点型是0.0,布尔型是false;
数组一旦创建后,大小就不可改变。
简写:
int[] arr = { 68, 79, 91, 85, 62 };
字符串数组很SB,在JAVA中字符串是引用类型,数组也是引用类型,字符串数组就是引用+引用。
数组的操作:
Arrays.toString(arr);可以快速获取数组的所有内容。
Arrays.sort(arr); 对数组进行排序

输出
System.out.print("aa");     不换行输出
System.out.println("bb");   换行输出
System.out.printf()        格式化输出
        double d = 3.1415926;       
        System.out.printf("%.2f\n", d); // 显示两位小数3.14
    %d  格式化输出整数
    %x  格式化输出十六进制整数
    %f  格式化输出浮点数
    %e  格式化输出科学计数法表示的浮点数
    %s  格式化字符串
输入

首先通过import语句导入java.util.Scanner

import java.util.Scanner;  
Scanner scanner = new Scanner(System.in); // 创建Scanner对象
String name = scanner.nextLine(); // 读取一行输入并获取字符串
int age = scanner.nextInt(); // 读取一行输入并获取整数
判断

因为字符串是引用类型,所以用==判断相等的时候判断的是引用地址而不是字符串的字面值,要判断两个字符串的字面是否相等需要函数

if(string1.equals(string2)){}
switch,和js没什么区别,不再赘述。
int option = 1;
switch (option) {
        case 1:
            System.out.println("Selected 1");
            break;
        case 2:
            System.out.println("Selected 2");
            break;
        case 3:
            System.out.println("Selected 3");
            break;
        default:
        System.out.println("Not selected");
        break;
}
for循环
for循环  和js一模一样,不在赘述
for each循环
int[] ns = { 1, 4, 9, 16, 25 };
for (int n : ns) {
    System.out.println(n);
}

注意:for each循环无法指定遍历顺序,也无法获取数组的索引。除了数组外,for each循环能够遍历所有“可迭代”的数据类型,包括List、Map等。

二维数组

新建二维数组:

int[][] ns = {
    { 1, 2, 3, 4 },
    { 5, 6, 7, 8 },
    { 9, 10, 11, 12 }
};
打印二维数组:
for (int[] arr : ns) {
    for (int n : arr) {
        System.out.print(n);
        System.out.print(', ');
    }
}
或者使用Java标准库的:
System.out.println(Arrays.deepToString(ns));
命令行参数

Java程序的入口是main方法,而main方法可以接受一个命令行参数,它是一个String[]数组。这个命令行参数由JVM接收用户输入并传给main方法:

public class Main {
    public static void main(String[] args) {
        for (String arg : args) {
            System.out.println(arg);
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容