Java概念

2. 基本概念

  • JDK、JRE、JVM的关系:

    • JDK:Java Development Kit,Java开发工具包
    • JRE: Java Runtime Environment,Java运行环境
    • JVM:Java Virtual Machine,Java虚拟机
    • JDK包含JRE,JRE包含JVM
    • JRE较于JVM多了一些库和包,JDK较与JRE多了编译和调试工具
  • JDK版本选择

    • 目前JDK1.8(也叫JDK8,注意不是JDK18)用得最多
  • Java代码的编译运行流程

    • 将Java源码编译成Java字节码。
    • 使用JVM将Java字节码转化成机器码。
    • JVM作用:跨平台、内存管理、安全。
  • JSE、JEE、JME的区别

    • JSE: Java Standard Edition,标准版
    • JEE:Java Enterprise Edition,企业版
    • JME: Java Mirco Edition,移动版
    • Spring是JEE的轻量级替代品
    • SpringBoot是Spring + 自动化配置

隐式数据类型可以从高到低转,不可以低到高转

long

shift+f10运行

sout

c++可以用%s输出一个字符串但不能输出一个String

c++里面是可以用字符数组表示字符串的
例如:char a[] = "Hello,World!";
但是java不可以,字符数组就是字符数组,字符串就是字符串

java中判断两个对象是否相等不能直接用等号,因为两个对象判断相等的依据是地址
所以要用API:a.equals(b)

1.final定义常量
2.使用float和long进行强制类型转换
在数字后面加上L或者F或者在前面加上float或者long
解释:
(1)在Java中,整数的默认数据类型是int。当我们将一个整数赋值给任何类型变量时,这个整数默认是int型。
如果这个数字小于int的最大值,可以直接给long赋值,因为int的取值范围小于long型,可以自动转换。
如果这个数字大于int的最大值,此时不能自动转换,我们就需要在数字后面加上L来进行强转,否则会报错。
(2)在Java中浮点数的默认数据类型是double,当我们将一个浮点数赋值给任何类型变量时,这个浮点数默认是double型。
如果我们将整数赋值给float,因为float的取值范围大于int,会自动进行转换
如果我们将浮点数赋值给float,因为float的取值范围小于double,此时需要在后面加上F进行强转
3.当运算级相同时
单目运算+-和赋值=自右向左
一般自左向右
4.浮点数转整数
强制类型转换相当于单目运算符,不会四舍五入
int x;
x = (int)10/3.0; //wrong,这里相当于吧10转换成了整形
x = (int)(10/3.0); //accept,这里相当于吧10/3.0这个整体转换成了整形
//C++也是如此
5.关系运算符
(1)关系运算符的优先级比算数运算符的优先级低,但是比赋值运算符的高
(2)在关系运算符当中,比较是否相等的==和!=的优先级更低
(3)连续的关系运算符从左到右计算
(4)true和false和数字进行关系比较会出错,true和false进行><运算也会出错
6.浮点运算有误差
例如:0.1+0.1+0.1+....+0.1(10个) != 1
C++也是如此
正确的方法:a - b < 1e-6,让两个浮点数的差小于一个极小的数
7.java不可以while(一个数)
例如:while(1)或者while(x)都是不行的
8.Math.random() //[0, 1)
9.输出一个数字的反转
cin >> goal;
int res;
while(goal){
int t = goal % 10;
goal /= 10;
res = res * 10 + t;
}
cout << res << endl;
10.标号
再循环前可以放一个标号表示循环,例如:
Label :
break Label;
continue Label;
可以用来结束多重循环
11. 控制小数的位数
和C++相同,可以使用(%.2f,num)的形式
12.数组类型可以直接使用length属性
int []num = new int[100]; //java会默认初始化数组元素为0
for(int i = 0; i < num.length; i ++ )
13.java可以像C++一样创建数组
int []num = {1, 2, 3, 4, 5};
14.所有者与管理者
int a = 10; //a是数据10的所有者
int []b = {1, 2, 3, 4, 5}; //b拥有一个单独的空间,并且是数组的管理者
int []c = b; //c也是一个数组的管理者,它管理的数组和b管理的数组是相同的
c[1] = 10; //c[1]和b[1]都修改为10
15.for-each循环遍历数组
int []date = {1, 2, 3, 4};
for(int k : date)
//cout << k
16.\t
\t并不是回退特定的字符位置
它的作用主要是对齐
17.包裹类型,可以使用:对象/类.方法()
例如:Integer.bieCoutn(i)
统计i的二进制表示下1的个数
18.字符串变量
String str = new String("abcd"); //String第一个S是大写
String是一个类,是对象的管理者,所以创建一个字符串要用new
String 是引用类型数据,不可以修改,这间接说明了字符串方法不会改变字符串本身,但方法会返回一个新的字符串
s.charAt(i)方法查看字符串s中下标为i的字符
字符串不可以使用范围遍历
19.方法和函数没有本质的区别
20.代码优化:避免多个出口的情况
例如
bool get_max(int a, int b)
{
if(a>b) return a; //出口1
else return b; //出口2
}

bool get_max(int a, int b) //更好的写法
{
int t;
if(a>b) t = a;
else t = b;
return t; //出口1
}
21.类型转换
char->int->double
22.java在调用函数时,永远只能传值而不能传递本身
23.如果一个函数被多次调用,每一次调用都会生成一个新的内存空间


Java基础
HTML、CSS、Javascript
jQuery
Ajax
Vue
微信小程序

动态网页

编程强化
JVM优化
数据结构算法

软件项目管理
Maven
SVN程
Git
Jenkins

热门技术框架
SSM
Mybatis-Plus
Spring Data
Spring

分布式架构
Dubbo、Zookeeper
SpringCloud
Eureka
Skywalking

服务器中间件
RocketMQ
Kafka
Sharding-JDBC
Redis
MongoDB

服务器技术
Tomcat
Linux系统
CentOS、Virtualbox
Ubuntu、Vmware

容器技术
Docker

业务解决方案(实战项目)
Elasticsearch
Lucene
Quartz
Elastic-Job
SpringSecurity
Activiti

posted @ 2022-06-29 10:47  光風霽月  阅读(49)  评论(0编辑  收藏  举报