文章目录
1.常用cmd命令
盘符切换
E:回车;即可切换到E盘
dir;查看路径下内容
cd;进入单级目录
cd…;回退上一级目录
cls;清屏
2.jdk和环境变量
jdk下载与安装
1.https://www.oracle.com/,访问网址
2.点product,点java
3.点下载java
4.默认就是最新版本,想想要下载旧的就点archive
5.下载第2个就行
6.下完安装,安装路径不要有空格和中文
7.cmd中写java -version,出现版本,就安装jdk成功了,如果不成功,可能没配值环境变量,新版本jdk一般自动配置jpath,老版本需要自己配置
环境变量path和java_home
配置path方便在任意目录中启动程序,如何配置环境变量,网上很多了
java_home告诉了操作系统jdk安装在哪个位置,将来其他技术通过这个环境变量找到jdk,java_home无论新版旧版都需自己配置
Java开发环境的两个重要命令java和javac
java执行工具
javac编译工具,类似于翻译
Java程序开发三个步骤
1.编写代码,HelloWorld.java,源代码文件
2.编译代码,使用javac编译,生成字节码文件,编译完会生成class文件,HelloWorld.class
3.使用java运行文件
Java程序的执行原理
机器语言就是0101010101001,早期就用机器语言编程,之后又有了汇编语言,现在用高级语言,这些高级语言最终翻译成机器语言去执行
jdk的组成
jvm:Java虚拟机,真正运行java程序的地方
核心类库:java写好的程序,程序员给自己的程序调用
jre:java的运行环境,包括jvm和核心类库
jdk:java开发工具包,包括上面所有
jdk如何执行java程序
.java通过javac进行编译,产生.class文件,再通过Java把程序送到jvm里运行,然后可能需要调用核心类库的程序
java跨平台,工作原理
一次编译,处处可用,为什么能实现处处可用,是因为sun公司对于各大系统都写了jvm,运行程序仅仅需要安装jvm就可以了
3.IDEA
idea项目结构介绍
project工程–>module模块–>包–>类
比如淘宝网站就是一个工程,首页和购物车和订单就是模块
test1就是工程,study1就是模块,com.wfr.daotian就是包名,wfr1就是类名
idea字体等快捷键
file–>settings–>apperance–>theme,选择主题
file–>settings–>editor–>font,改字体
快捷键:
main/psvm可以快速产生main方法
输出的内容.sout可以写一个输出语句
ctrl+d,复制当前数据到下一行
ctrl+x,删除当前行
ctrl+alt+l,格式化代码
4.Java基础语法
1.注释
代码注释:
1.//qwswq
2./*
dsdsa
*/
文档注释:
/**
sdsadsa
*/
2.字面量
字面量就是告诉程序员:数据在程序中的书写格式
3.变量
变量就是存储一个数据的内存区域,且里面的数据可变化
定义的格式
数据类型 变量名称 = 初始值;首字母建议小写
变量在计算机的底层原理
数据在计算机用二进制表示,计算机的最小单位一个字节B,由8位b组成
字符在计算机用ASCII码表示
图片由无数个像素点组成,计算机存储着这些像素点
声音通过二进制储存
4.数据类型
5.关键字
6.标识符
7.类型转换
自动类型转换
类型范围小的变量,可以直接赋值给范围大的变量
表达式的自动类型转换
强制类型转换
强制类型转换就是大范围的数据强制赋给小范围的数据
8.运算符
基本算数运算符
+符号做连接符
自增自减运算符
赋值运算符
关系运算符
逻辑运算符
三元运算符
键盘输入技术
9.程序流程控制
1.分支结构
if
根据判定的结果决定某个分支的代码
switch
2.循环结构
for
while
do-while
####三种循环的区别
break和continue
随机数random
减加法:先减一,生成0–>9的范围,可以用r.nextInt表示,然后加1就可表示0–>10
同样的,先减65,会变成0–>26,用r.nextInt表示,然后+65,就行了
10.数组
1.数组定义
静态初始化数组
定义数组直接赋值
动态初始化数组
数组的区别
数组的默认值
2.数组遍历
3.数组内存图
java把内存分为以下五个部分
文件在方法区,方法,数据在栈,对象在堆
先把类加载成class文件,放在方法区,然后把main方法放在栈内存运行,开辟一片区域叫a区域,并且加载一组数组变量,但是没有值,然后new出来的在堆,然后把地址赋给左边的数组进行存储最后根据存储的地址,找到右边位置进行赋值
4.Debug工具
11.方法
1.方法的定义
2.方法的内存原理
把class文件放在方法区,先执行main方法放在栈中,执行第一行代码,然后把add方法加在栈中,把数据传给a,b,然后运行完代码把c返回到main方法,add方法退出栈,然后输出值
3.方法的参数传递机制
1.基本类型的参数传递
执行main方法,把10传给change里的a,然后把形参的a改成20,运行完main的a还是10
2.引用类型的参数传递
虽然传递机制是值传递,对于基本类型传的就是数,而对于引用数据类型,比如数组,传递的值就是地址,那么就好理解了,方法传的是地址,如果函数改变了堆内存的中的数据,那么主函数的地址指向的数据的值就会发生改变
4.方法重载
5.return
任何方法,有返回无返回都可以,比如a/b,可以设置一个if判断,当b==0,return;
12.面向对象
1.类和对象
2.对象在内存中的运行机制
先执行test类加载到方法区,然后执行main方法加载到栈,然后执行car类加载到方法区,然后定义car1在栈内,在堆中new出一个内存存储一些name和price信息和成员方法的引用地址,然后把堆内地址赋给左边栈从c1,然后就改数据
3.构造器
4.this关键字
this指向就是c的的值,也就是new对象的地址
不加this会使这个构造器丧失作用,this就是指向的那个对象,这样就可以给对象赋值
5.封装
6.javabean
7.成员变量和默认变量
13.String
业务场景
1.string概述及其原理
方式2基本常用的以下四个
String s1 = new String();//无效果
String s2 = new String("wfr");//wfr
char[] chars = {'a','b','c'};
String s3 = new String(chars);//abc
byte[] bytes = {1,2,3,4,5};
String s4 = new String(bytes);//12345
两者的区别
2.string常见面试题
上图分析,就是s1一定指向那个常量池,s3经过拼接一定指向堆内存的某个位置,也就是说,双引号的指向常量池,而其他的一定没有指向常量池对于上图而言;第二个编译器有点强,字面量abc已经知道了,就在编译的时候转成了,要不然在运行的时候要开辟很多对象,浪费性能
3.string常用api
String a = "qwer";
String b = "QWER";
System.out.println(a.equals(b));//false
//忽略大小写
System.out.println(a.equalsIgnoreCase(b));//true
//1.长度
String name = "内京东方牛筋丸";
System.out.println(name.length());//7
//2.获取某个索引的字符,利用for循环可便利每个字符
char c = name.charAt(1);//数字代表索引下表
System.out.println(c);//京
//3.把字符串转化为字符数组,同样利用for便利
char[] chars = name.toCharArray();
System.out.println(chars[2]);//东
//4.截取内容,包前不包后
System.out.println(name.substring(2,5));//东方牛,也就是后面那个没有
//5.截取内容,只写一个就行,从前截取到尾
System.out.println(name.substring(3));//方牛筋丸
//6.替换
System.out.println(name.replace("内京", "***"));//***东方牛筋丸
//7.判断文本是否有字段
System.out.println(name.contains("东方"));//true
//8.判断以啥开始
System.out.println(name.startsWith("内京"));//true
System.out.println(name.startsWith("京"));//false
4.string案例
14.ArrayList
1.arraylist的快速入门
2.arraylist对于范型的集合
因为必须存储引用类型,所以是integer而不是int
3.ArrayList的常用api