Skip to content

JAVA入门2 基础

写在前面:最近闲着也是闲着,不如看看Java.(毕竟目前java岗位有c++的三倍之多) 抱着从零开始的心态,我决定从最基础的开始.


java5.0 8.0 11.0 17.0 是LTS. JAVAMe用于嵌入式开发,但是现在几乎不用了 matlab是Java写的


执行程序 用java.exe 来执行,javac.exe来编译生成.class文件.这两者都是JDK提供的

javac HelloWorld.java
java HelloWorld


JVM + 核心内库 +开发工具(javac编译工具 java运行工具 jdb调试工具) = JDK 1caf1153a642f8f107918f1e478af867_MD5 JVM + 核心内库 = JRE java运行时环境 JRE比较短小,不占据过多空间. JDK包含了JRE,JRE包含了JVM


类名要和文件名保持一致 null不能打印. 汉字被视为一个字符,也就是 '男' 这是一个正确的字符.


制表符: eaa84f135f703c24f90a35228668fb61_MD5 也就是第一个制表符会变成4个空格,第二个会变成5个空格.从而可以实现对齐的效果.注意,这只和前面的有关系.


打印变量

int a = 10;
System.out.println(a);
System.out.println("a="+a);//ok

System.out.printf("a= %d",a);//ok
String ss = "a=%d";
System.out.printf(ss,a);//ok
输入内容:
//1.导入包
import java.util.Scanner;
public class Demo
{
    public static void main(String[] args)
    {
        //2.创建对象 (这里除了sc是变量名之外,其他都不能变)
        Scanner sc = new Scanner(System.in);
        //3.接受数据
        int i = sc.nextInt();
    }
}


数据类型: 一字节:byte

八字节:long (没有longlong) 如果想要定义一个long型的变量,需要后缀一个L/l(推荐L,方便辨识) float(4字节)同理.因为默认类型是int/double

long x = 9999999999L;
float y  = 1.01F;

布尔:boolean 字符中char 采用unicode编码,因此是2字节的.


项目结构: 整个项目是分成多个模块相互独立的,如微信的导航栏下有 消息 联系人 个人中心 三个模块 消息模块当中,可能需要管理多个文字 图片 动画等, 那么就创建一个文件夹(包),管理文字包.类似有图片包,动画包.

我们可以把每一天的代码视为一个module即可. 在idea中选择新建模块即可.(注意,要在右上角选择"项目结构"进行操作) b4854f1889951271c2476aad5d46d551_MD5

这样我们就有test1,test2两个模块了.

我们可以先把mian删了,然后选择在模块下面的src中点击新建包,包名常常用公司域名反写+具体的包名 来命名 a9842773a54fbf82693bc843b3edec96_MD5 注意,如果我们查看文件夹,会发现在文件结构当中,是有单独的cn文件夹的,然后iamwsll是cn文件夹的子文件夹,demo1又是iamwsll的子文件夹.demo1底下就能写一个main了.

如果我们在同一天(同一个包中)想写多个demo呢?在包里面新建类,然后在类里面写main函数即可. 如果我们想组织的大一点呢?可以新建一个包,包名叫做cn.iamwsll.demo2 即可. 每个class都可以有自己的main函数

如果我们想重命名一个类,不能直接修改类名,应该用IDEA的重构功能(因为文件名和类名需要保持一致)


在IDEA中,输入psvm(public static void main的缩写)然后按tab,这样就可以快速得到main函数 输入sout再按tab就能快速得到System.out.println()


byte short char 运算的时候,无论如何都会提升到int才会计算. 因此:

byte b1 = 10;
byte b2 = 20;
result = b1 + b2;
这样的情况下,result是int类型.


只要"+"操作当中出现了字符串,那么+就会变成字符串连接符,而不是算数运算符了.

如果连续进行+,那么从左往右自动执行. 也就是1+99+"test" 得到的结果是"100test"

字符(char)在参与到 + 算数运算的时候,会转化成acill码:(强调:+是算数运算符时才可以)

System.out.println('a'+ 0);//输出97
System.out.println('a'+ "abc");//由于有字符串参与,+是字符串连接符,因此结果是aabc


底层当中 short s = 1; s+=1 ; 并不等同于 s = s+1,而是s = (short)(s+1);即蕴含了一个强制类型转换


>> 是算数右移,左边补符号位
>>> 是逻辑右移,左边一定补0
  1. JDK5 以后,Switch支持enum JDK7 以后,Switch支持String JDk12以后:
    //箭头语法,不用打break 
    //这里如果case当中只有一条语句,那么还可以省略大括号
    switch(num){
        case 1 ->{
            System.out.println("1");
        }
        case 2 ->{
            System.out.println("2");
        }
        case 3 ->{
            System.out.println("3");
        }
        default ->{
            System.out.println("nothing");
        }
    }
    
    甚至可以这样: 0aaad00fe7507ae40b50eb230f389621_MD5 c1dcd5fb7f853a18d261acffb27a1f05_MD5 8d8f5144646817e845af6dbf14b32875_MD5
  2. default可以省略,但是会导致无法匹配到任何case,直接跳到后面的语句. 还可以在case的语句当中返回表达式,然后用变量接收整个Switch的值(类似rust的模式匹配) 93aa31ff730f64ce871d6186796894eb_MD5

获取随机数:

import java.util.Random;

public class Main
{
    public static void main(String[] args)
    {
        Random random = new Random();
        int num = random.nextInt(100);// 生成0-99之间的随机整数
        int num2 = random.nextInt();//生成在int范围内的随机数
        System.out.println("生成的随机整数是:" + num);
    }
}

main 方法的返回类型是 void,这表明它不会返回任何值(也就是不需要return 0)。要是你想要让程序提前退出,可使用 System.exit(int status) 方法。其中,status 为 0 时表示正常退出,非零值表示异常退出。