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
JVM + 核心内库 = JRE java运行时环境
JRE比较短小,不占据过多空间.
JDK包含了JRE,JRE包含了JVM
类名要和文件名保持一致 null不能打印. 汉字被视为一个字符,也就是 '男' 这是一个正确的字符.
制表符:
也就是第一个制表符会变成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中选择新建模块即可.(注意,要在右上角选择"项目结构"进行操作)

这样我们就有test1,test2两个模块了.
我们可以先把mian删了,然后选择在模块下面的src中点击新建包,包名常常用公司域名反写+具体的包名 来命名
注意,如果我们查看文件夹,会发现在文件结构当中,是有单独的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;
只要"+"操作当中出现了字符串,那么+就会变成字符串连接符,而不是算数运算符了.
如果连续进行+,那么从左往右自动执行. 也就是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
- 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"); } }

- default可以省略,但是会导致无法匹配到任何case,直接跳到后面的语句.
还可以在case的语句当中返回表达式,然后用变量接收整个Switch的值(类似rust的模式匹配)

获取随机数:
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);
}
}
¶
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 时表示正常退出,非零值表示异常退出。