前言
希望可以通过这篇文章,能够给你得到帮助。(感谢一键三连)
image
内存分析,底层算法,JDK源码分析(
idea
版本和jdk13
)
初级学习方向:Java
入门,idea
开发环境使用(idea,eclipse
),面向对象基础和面向对象设计,Java
虚拟机内存机制,内存分析全面理解面向对象,内存分析全面理解编程语言,面向对象深入,数组和数据存储,异常机制和可视化bug
追踪,常用类和jdk
底层源码分析,容器的使用,io
流技术,网络编程,多线程和并发编程,函数式编程。
程序员职业发展:技术总监,资深码农,架构师,项目经理,ceo
等。
常见的语言:c,java,python,c ,c#,javascript,php,swift,kotlin
等。
掌握:代码能力,面向对象分析能力,内存底层和源码分析习惯,调试和查错能力。
javase java
标准版本, ee
企业级开发必学。
image
image
image
image
image
image
image
image
image
image
image
image
程序是现实逻辑的表达,程序的本质三个因素,变量,if
语句,循环语句。考虑因素(变量),判断条件,无限极。
表格思想去理解数据库存储数据
如何理解Java中的类和对象?-表格思想
- 表结构对应:类
- 一行数据对应:对象
xml
文档:表结构对应:文档标签定义;一行数据对应:指定元素。
争对公司:了解该公司基本情况,侧重哪款技术,研究该公司产品。
image
java
版本
-
JavaSE(Java Standard Edition)
:标准版,定位在个人计算机上的应用。 -
JavaEE(Java Enterprise Edition)
:企业版,定位在服务器端的应用。
Java的特性和优势
image
Java程序的运行机制
计算机高级语言的类型主要有编译型和解释型两种,而Java 语言是两种类型的结合。
Java
首先利用文本编辑器编写 Java
源程序,源文件的后缀名为.java
;再利用编译器(javac
)将源程序编译成字节码文件,字节码文件的后缀名为.class
; 最后利用虚拟机(解释器,java
)解释执行。
画了个图:
image
JVM、JRE和JDK
JVM (Java Virtual Machine)
就是一个虚拟的用于执行bytecode
字节码的"虚拟计算机"。它包含了:指令集,寄存器集,结构栈,垃圾收集堆,内存区域。JVM
负责java
字节码解释运行,边解释边运行,这样速度就会受到一定的影响。
不同的操作系统有不同的虚拟机,java
虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。java
虚拟机是实现跨平台的核心机制。
画了个图:
image
Java Development Kit(JDK)
包含:JRE
虚拟机,库函数,运行Java
应用程序所必须的文件。
Java Runtime Environment(JRE)
包含:Java虚拟机
,库函数,运行Java
应用程序所必须的文件。
JVM (Java Virtual Machine)
就是一个虚拟的用于执行bytecode
字节码的"虚拟计算机"。
JDK、JRE和JVM
的关系如图:
image
如果只是运行
Java
程序,只需要JRE
就可以,JRE
通常非常小,其中包括了JVM
;如果要开发Java
程序,就需要安装JDK
。
JDK下载和安装
下载地址
image
现新:
image
点击”Accept License Agreement”
,然后选择对应的版本,下载即可
image
image
再进入JDK的安装目录
image
-
bin
目录是存储一些可执行的二进制文件 -
lib
存储相关jar
包 -
src.zip
是JDK
相关JAVA
类的源代码
image
image
环境变量Path的配置
C:Program FilesJavajdk-15.0.1
image
右键计算机,属性,高级系统设置
image
image
image
一定是英文分号而不是中文分号
测试JDK安装成功
image
image
第一个Java
程序
使用记事本开发第一个Java程序
代码语言:javascript复制public class helloWorld{
public static void main(String[] args){
System.out.println("Hello Java!我的掘金魔王哪吒作者");
}
}
保存在d盘,文件名helloWorld.java
,打开命令行窗口,进入java
文件所在目录,执行javac helloWorld.java
,生成class文件。
解释并运行阶段:java helloWorld
,运行编译生成的helloWorld.class文件,输出结果。
常见错误
- path变量配置错误导致没有找到javac命令
- 可能是操作系统显示设置的问题,隐藏了文件的扩展名
- 找不到main方法,应该是main方法书写有误
常用DOS命令
-
cd
目录路径,进入一个目录 -
cd ...
,进入父目录 -
dir
,查看本目录下的文件和子目录列表 -
cls
,清除屏幕命令 -
Tab
键,自动补齐命令
常用Java开发工具
- clipse官方网址
- IntelliJ IDE官方网址:
- NetBeans 官方网址
下载和安装eclipse
下载地址
选择Eclipse IDE for Java Developers
,根据自己安装的JDK
,下载完成后,直接解压。进入目录,双击eclipse.exe
即可使用。
image
image
工作空间指Java项目存储的目录,一般采用默认工作空间目录即可。
image
在eclipse中创建Java项目,选择new,Java Project,开始新建Java项目。
image
image
使用eclipse开发和运行Java程序
在src目录上右键单击,建立一个Java类。
image
image
image
Java项目的src目录和bin目录
- src用于存放源代码
- bin用于存放生成的class文件
桌球小游戏
ball.png
image
desk.jpg
image
代码语言:javascript复制import java.awt.*;
import javax.swing.*;
public class BallGame extends JFrame {
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
double x=100; //小球的横坐标
double y=100; //小球的纵坐标
boolean right = true; //方向
//画窗口的方法
public void paint(Graphics g){
System.out.println("窗口被画了一次!");
g.drawImage(desk, 0, 0, null);
g.drawImage(ball, (int)x, (int)y, null);
if(right){
x = x 10;
}else{
x = x - 10;
}
if(x>856-40-30){ //856是窗口宽度,40是桌子边框的宽度,30是小球的直径
right = false;
}
if(x<40){ //40是桌子边框的宽度
right = true;
}
}
//窗口加载
void launchFrame(){
setSize(856,500);
setLocation(50,50);
setVisible(true);
//重画窗口,每秒画25次
while(true){
repaint();
try{
Thread.sleep(40); //40ms, 1秒=1000毫秒. 大约一秒画25次窗口
}catch(Exception e){
e.printStackTrace();
}
}
}
//main方法是程序执行的入口
public static void main(String[] args){
System.out.println("掘金:魔王哪吒");
BallGame game = new BallGame();
game.launchFrame();
}
}
效果图:
image
代码语言:javascript复制import java.awt.*;
import javax.swing.*;
public class BallGame2 extends JFrame {
Image ball = Toolkit.getDefaultToolkit().getImage("images/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("images/desk.jpg");
double x=100; //小球的横坐标
double y=100; //小球的纵坐标
double degree = 3.14/3; //弧度。此处就是:60度
//画窗口的方法
public void paint(Graphics g){
System.out.println("窗口被画了一次!");
g.drawImage(desk, 0, 0, null);
g.drawImage(ball,(int)x, (int)y, null);
x = x 10*Math.cos(degree);
y = y 10*Math.sin(degree);
//碰到上下边界
if(y>500-40-30||y<40 40){//500是窗口高度;40是桌子边框,30是球直径;最后一个40是标题栏的高度
degree = -degree;
}
//碰到左右边界
if(x<40||x>856-40-30){
degree = 3.14 - degree;
}
}
//窗口加载
void launchFrame(){
setSize(856,500);
setLocation(50,50);
setVisible(true);
//重画窗口,每秒画25次
while(true){
repaint();
try{
Thread.sleep(40); //40ms, 1秒=1000毫秒. 大约一秒画25次窗口
}catch(Exception e){
e.printStackTrace();
}
}
}
//main方法是程序执行的入口
public static void main(String[] args){
System.out.println("掘金:魔王哪吒");
BallGame2 game = new BallGame2();
game.launchFrame();
}
}
效果图如下:
image
image