前言
为什么要写这一系列博客(自从我开始自学java到现在才有半年时间,这半年时间说长不长,但是我已经学到spring框架了,最近突然想自己搞个网站,然后开始自己写html之类的,在这过程中发现自己之前学的一些东西基本上都忘了…也是不得不服一句人老。所以呢就想着给自己学的东西建个知识的索引,就下定了决心从头开始总计一下知识点,顺便给自己提供个参考。)ps.由于本人学习时间尚短,可能理解深度不够,或者干脆出现一些理解错误,希望看到这个博客的大佬们能指出来,感激不尽。
java基础部分1
1.jdk下载及运行环境搭建
1.1jdk下载
在说下载之前啰嗦一句,jdk与jre区别:jdk是开发人员环境包,包括jre(运行环境包)
官网下载地址(可能需要登录才能正常下载,我是用vpn登录的oracle账号):oracle官网jdk下载连接
1.2配置运行环境
win:我的电脑–>属性–>高级系统设置–>环境设置–>添加系统环境变量:
在系统变量里新建“JAVA_HOME”变量名,变量值就是JDK安装的路径;
在系统变量里新建变量名为“CLASSPATH”,变量值为“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;”前面的点不要丢;
打开“path”变量,如果没有就新建一个,变量值就是你的JDK安装目录下的bin目录的路径,和jre路径下的bin目录;
三部分搞定,之后要验证是否配置成功就在桌面win+r运行cmd,在命令控制台中输入java -version;看是否出现如下提示信息
java version “1.8.0_211”//版本号可能不同
Java™ SE Runtime Environment (build 1.8.0_211-b12)//版本号
Java HotSpot™ 64-Bit Server VM (build 25.211-b12, mixed mode)//版本号
cmd编译类用javac xxx.java
运行用java xxx//类名
API文档位置:
2—国际惯例HelloWorld入门程序解读
2.1入门程序代码
如下:
public class HelloWorld {
public static void main(String[] args) {
System.out.println(“helloworld”);
}
}
java是面向对象的一门语言,对数据的操作都是基于对象来完成的,对象是类的实例化,HelloWorld 就是类名,public是访问修饰符,表示此类的访问性是公开的,class关键字用来创建类,static表示这个方法是静态的,第三行语句是控制输出的语句,输出的内容就是helloworld。
2.2类名命名规则
一般首字母大写,类名只能包含字母数字和下划线,且只能以字母开头。命名时最好遵循驼峰命名法:FirstJavaClass.
e.g: public class FirstJavaClass{
构造器
域
方法
}
3—数据类型
8种基本数据类型
byte | 1字节
short | 2字节
int | 4字节
long | 8字节
float | 4字节
double | 8字节
char | 2字节
boolean | 1位
1字节=8位(8个0或1)。
引用类型
对象就是引用类型,数组,enum型等。
类型转换
基本数据类型之间存在转换,整型按照字节大小,由小到大顺序可以自动转型。在有运算符存在的时候,short类型和byte类型的运算结果会默认转型成int型,如果此时赋值给short型或者byte型会报错!
e.g byte b1=1; byte b2=2; byte b3=b1+b2;
这种写法得到的b3应该是int类型
强制转换:整型按照字节大小,从大到小转换可以用强转,但是注意可能会超范围。
e.g int i=2; byte c=(byte) i;
这是一个正常的强转,如果把i的值改成130就会有问题,(byte最大表示到127—2的7次方减1)
--------------------------------------------------
强转的这个方式也可以用在对象上,不过只有多态的对象才没问题。
数组类型
一维数组声明格式:数据类型[] 数组名称={};//=new 数据类型[]{}或者new 数据类型[n]
二维数组:数据类型[][] 数组名={{},{},{}}//new 数据类型[m][n]
不规则二维数组:{数据类型[][] 数组名=new 数据类型[n][];
数组名[0][]=new 数据类型[i];
…
数组名[n-1][]=new 数据类型[k];
}
4—变量、常量与运算符
4.1变量的定义与初始化
e.g byte b1=1;
这就是定义了一个名字叫b1的,数据类型为byte的变量,并且进行了初始化赋值的操作。变量也可以只定义不初始化,这个时候变量有默认的空值。
变量名也只能用字母和数字,最好遵循首字母小写,其他单词首字母大写的规则:
e.g byte firstByteField=1;
4.2常量
定义常量一般用final来修饰,表示不可更改的值,一般类中定义的常量名都用大写来表示。
在Math类中提供了各种数学函数的常量和方法可以用Math.sqrt(),Math.pow(x,a),Math.round(),Math.random(),Math.PI,Math.E等分别用来求平方根,x的a次幂,四舍五入,随机数,π和e。
4.3运算符
单目运算符:++,--;
双目运算符:+-*/=\[];
三目运算符: x>y?a:b对x>y进行判断,真执行a,假执行b。
逻辑运算:|| && == != > < <= >=
位运算:| & ^ ~ << >>
5—字符串
5.1子串
使用String中的substring(index1,index2)方法可以返回一个字符串的子串,返回的子串是从index1开始到index2结束,包含index1不包含index2.
5.2拼接
StringBuilder的append(String x)方法可以拼接x字符串到调用这个方法的对象上(改变对象的值)
可以直接用+来拼接字符串。
6—输入输出
向控制台输出:System.out.println();会输出括号中的内容并换行。
向控制台输入需要用到Scanner类。
e.g
System.out.println("请输入:"); Scanner s=new Scanner(System.in); //nextLine返回的是String类型。 String s2 = s.nextLine(); System.out.println("输入的是"+s2);
这几行代码可以读取你从键盘输入到控制台上的信息并打印
7—判断,循环,选择,打断
判断
if(){}语句用来判断,()中放boolean类型的变量或者表达式。
循环
for(int i=0;i<n;i++){}for循环n次
for(List<?> e:list){syso(e)}---for each循环
do{}while()---do...while循环
while(){}---while循环
选择
switch选择体
switch(String){
case" ":...;
case" ":...;
case" ":...;
default:...;
}
打断
1.break打断—使用break打断可以打断选择,循环,判断,直接跳出这些结构体。
2.continue 打断—用于打断单次循环,但是不跳出循环,打断当次循环后会继续执行下次循环,用于switch没作用。