Java环境搭建:
- java官网下载jdk13
- 解压后配置环境变量
export JAVA_HOME=/home/chr/java/jdk1.8.0_231
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=/home/chr/java/jdk1.8.0_231/bin:$PATH
export MAVEN_HOME=/home/chr/maven/apache-maven-3.6.2
export PATH=${MAVEN_HOME}/bin:$PATH
注意环境变量后面不能有空格否则mvn -v会报错
- 下载安装maven
- 换阿里的源setttings.xml
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
在项目中右键更新
- vs code配置json环境
"java.errors.incompleteClasspath.severity": "ignore",
"java.home": "/home/chr/java/jdk1.8.0_231",
"java.configuration.maven.userSettings": "~/maven/apache-maven-3.6.2/conf/settings.xml",
"maven.executable.path": "~/maven/apache-maven-3.6.2/bin/mvn",
"maven.terminal.useJavaHome": true,
"maven.terminal.customEnv": [
{
"environmentVariable": "JAVA_HOME",
"value": "/home/chr/java/jdk1.8.0_231"
}
],
关键额几个参数配对就行
Vs Code2019 配置Java开发环境
Vs Code中SpingBoot第一个Hello World
Ctrl+Shift+P
打开选择器- 搜索
spring
- 选择
Generate a Maven Project
创建一个Maven项目
- 选择Java语言
-
Group Id
-
输入项目名
-
选择SpringBoot版本
-
选择需要引入的包,引入如下几个包即可满足web开发:
- 创建好后vscode右下角会有如下提示,点击Open it 即可打开刚才创建的SpringBoot项目
- 项目创建后会自动创建DemoApplication.java文件,在DemoApplication 文件目录下新建文件夹 Controller,新建文件HomeController.java,效果如下:
Ps:SpringBoot项目的Bean装配默认规则是根据DemoApplication类所在的包位置从上往下扫描。所以必须放在同一目录下否则会无法访问报如下所示错误:
- Debug配置,在pom.xml中添加tomcat引擎
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- <scope>provided</scope> -->
<!-- <scope>compire</scope> -->
</dependency>
现在就可以进行Debug啦
大功告成
SpingBoot中一些优秀的设计思想
- SpringBoot的IOC和AOP
pass
Java语法概念,类比Python和Golang
- java中的public为访问修饰符,一共有四个等级,对访问类进行限制
- 关键字后面紧跟类名,类名以大写开头
- 源码的文件名必须与公共类的名字相同,要注意大小写
- java解释器运行java代码时将其编译成.class结尾的字节码,javac
- psvm:入口函数
- java的main外面必须有个壳
- void:没有返回值
- static:静态方法
- 所有后面必须加;
- 回车不是语句的结束标志,可以将一条语句写在多行
- int:±20亿,long就大了
- byte:-128 ~ 127
- java有两种浮点类型:float,double(双精度浮点数)
- 整形和boolean之间不能转换
- 在java中每一个变量都有一个类型
- 不提倡在一行声明多个变量
- 变量的声明与赋值(初始化),可以在一行
- 在java中声明可以放在任何的位置,尽可能放在靠近使用的地方
- final代表常量 const
- 常量只能被赋值一次,一般为大写,一旦赋值后不能被改变
- public static final:类常量(python的中类属性)
- 类常量定义在main的外边
- 可以将main标记为strictfp:pssvm(使用严格的浮点计算)
- Math和strictMath
- 数值类型之间的转换,6种精度无丢失的转换,3种有丢失的转换
- float f = n:正常转
- int nx = (int)x:强转
- +=3.5:如果类型不同就会自动强转
- n++, ++n
- 枚举类型:enum
- 有一个示例说明了break语句的工作状态,标签放在希望跳出的最外层循环之前,必须紧跟一个冒号
- 大数值:在不能满足精度要求的时候
- int[ ]a = new int[100]
- 可以使用 int[ ] a或int a[ ] 声明数组
- 用for循环来初始化数组
- for each就是for in
- 构造器就是构造函数
- private只有类自身才能访问该属性
- 所有的java对象都是在堆中构造的。构造器伴随new操作符一起使用
- public static final double PI:静态常量
- public final double PI:final实例域,域的值被设置不能被修改:常量,即没有setName方法,只有getName,一般放在不可变类String等的前面
- public static double PI:静态域
- public double PI:定义一个变量
- 有final就是fanil实例域,有static就是静态域,两者结合叫静态常量。
- 实例域通过对象来访问,静态域通过类名访问。其实就是python中的类属性和实例属性
- 不要把域设计为public 可以为 final和private
- 静态方法不能对对象进行操作,就是因为没有隐式参数this
- 无参数的构造器
- java支持在构造器中调用另一个构造器
- java还支持初始化块来初始化数据(静态初始化块,对象初始化块)
- 所有标准的java包都在java和javax中
- 一个类可以使用所属包中的所有类,以及其他包中的共有类,需要import
- 静态方法和静态域的导入:import static java.xx.xx.*
- 将类放入包中,类比于go,外部就可以通过包访问public内容了
- 如果不放在包中就会默认放在com/horstmann/corejava里面
- 包的作用域:public
- java中四个访问级别:private
- protected受访问保护
- object类也是所有类的超类
- hashcode:散列码
- getName:返回这个类的名字
- Class getClass返回包对象的类对象信息
- java中的接口用来做多继承,不支持类(抽象类)的多继承。在python中没有接口的概念,使用抽象类。多继承会使程序变得复杂
- 接口中必须包含compareTo方法。
- 要将类声明为实现某个接口需要使用关键字implements
class Employee implements Comparable<Employee> {
public int CompareTo(Employee other) {
return Double.compare(salary, other.salary);
}
}
comparable接口中的compareTo方法返回一个整数数值
try catch finally
- 泛型类就是具有一个或多个类型变量的类
- case:注意不是花括号