学习Java的目标
写一个自己的网站!
大牛思想
学习一门语言到最后都要去底层深入学习。
所以一定要建立竞争力。
如果只是为了玩玩可以学一下python。
保持热爱,编程是很酷的事情。
跟做人一样。
TIOB编程语言排行榜,可以了解到语言的热度。
2021年5月份排行
编程语言能干吗
java写网站--->手机app--->大数据
c++写游戏
c语言用来处理内存一类的考虑内存
最后送自己一句话:
每个牛B的人物都会有有一段苦逼的岁月,
只要像SB一样坚持终将牛B!
有一句话很有意思:
真正NB的老师一定是活成了学生心目中的样子。
教学的最本质的目的是对学生的人生观产生积极影响。
对于自己少沉迷游戏:
想要变成牛人就要懂得坚持。
多看书,提高自己。
光鲜亮丽的人要懂得看到别人背后的努力。
拒绝无用的羡慕和攀比。
多看看国际社会,银行知识,学音乐陶冶情操,拒绝无用社交。
网络日记
- 建议使用Typora书写
- 发布使用CSDN、博客园。(技术文章比较多)
- 自己打架建立一个网战比较费事。
- MarK文档学习一下。
- 其它的技术也都需要网络日记防止遗忘总结回顾。
设备要求
- 一台电脑(最简单的电脑)
- cpu ----->运算的地方(冯·诺依曼—计算机之父)
- 主板
- 内存 ------> 编程时候用到的内存数据存放
- io设备
- (显卡)-------->图性处理
- (散热装置)
- (显示器)
window的常用快捷键
alt+f4(关闭页面)
ctrl+delete(永久删除)
window+e(我的电脑)
ctrl+shift+esc(任务管理器)
进程里面(资源管理器就是桌面)
开启桌面输入(esplorer)
DOS命令(简单的)
Window(DOS简单用法)
#:换盘
e:(注意分号英文的)
#:查看当前目录的所有文件
dir
#进入文件夹
cd (change directory)
进阶:cd \d 跨盘的路径(C:/user/text)
#清除屏幕
cls
#退出
exit
#查看ip
ipconfig
#开启应用
直接到对应的盘打开如KuGou.exe
#ping
ping ip;
#文件操作
md 目录名(创建)
rd 目录名(删除)
cd> 文件名.后缀
del 删除文件名
计算机语言发展史
1. 一代语言(二进制)
2. 二代语言汇编语言(让人看得懂)
3. 三代语言高级语言(从C.JAVA.C++.C SHOP)。
JAVA帝国的小故事
- C出现的最早很厉害,喜爱效率高的作风C语言很快让别人觉得很厉害,随着人们深入的学习缺点出现了C绑定了指针和内存。
- 需要花大量的时间排查内存的释放。然后多人爱之深恨之切又有ing动力就想开发另一门语言解放自己,接着就出现了结合c优点的语言JAVA,java一出生就想着全面取代c。
- java并没有指针这个让别人头疼的东西,java大军很快分出三个小弟(javame,javaee,javase)
- javaee小弟不负使命在服务器领域称王了接着就吸引了一大批弟弟过来学习,后面乘着一个叫hadoop大数据的装备java的地位又进一步,把一个叫微软的弟弟欺负哭了。
了解JDK JRE JVM
JDK---->JRE----->JVM
JDK (开发人员工具)
JRE (java运行环境)
JVM (java可移植性的基础)
***JDK包含JRE与JVM***
身为编程人员我们需要一个jdk
JDK的安装卸载
(主流为jdk8)
- 卸载
#去环境变量里面删除jJAVA_HOME
- 安装
java注释
-
单行注释(//)
-
多行注释(/* */)
-
文档注释(/** */)(javados)这个就是自己发布API用的
养成好的习惯注释代码,有利于理解(让别人理解)
标识符和关键字
- 标识符(就是让别人认识的那个名字.类名.变量名等)
(A-Z,a-z,&,_)开头。 - 关键字就是java自己定义的一些特别字段
(main.class.static等)
基本数据类型
1. 数值类型
整形类型:byte 1字节(1byte=8bit),short 2字节,int 4字节 ,long 8字节(加后缀L)
浮点类型:float 4字节加F后缀,double 8字节
字符类型:char 2字节
整形范围:-2147483648-----2147483647(过大会溢出)
2.boolean类型
占一位true/false
3.引用类型
类,接口,数组
数据类型拓展
整数拓展 (前缀)
- 二进制0b
- 八进制0
- 十六进制0x
浮点数拓展
4. float (浮点数存在一个误差的)
5. double(也是浮点数)
尽可能避免浮点数比较使用大数类来比较(用于银行)
字符拓展
unicode标,字符就是通过编码标转换的
0-65536
类型转换(强语言java)
溢出问题
超过范围后就会溢出,溢出发生在两数相乘等计算时。
解决方法:
直接使用高位类型
把一位数转换成高位就会默认成高位计算。
变量,方法,命名规范
public class 变量 {
//常量final(是一种修饰词)
public static final double PI=3.14;
//类变量
int a;//会被赋予默认值
String str="hello";//没有赋值默认为0、null
public static void main(String[] args) {
//局部变量
int a=5;//被使用时需要赋值
System.out.print(a);
System.out.println(PI);
}
/*命名规范(驼峰取名)
1.变量,方法:开头第一个小写其它首字母大写
2.类名:开头第一个单词大写的驼峰
3.常量:全部大写+_分割。
*/
}
运算符
注意点:
- 加号会判断:里面的数据类型。
- 除法可能会因为小数的原因出现误差。(使用类型转换成double)
- ++ 的位置不同结果也不同
逻辑运算符
注意短路运算:
能够得到结果就不看后面的了。(短路运算)
位运算
- 理解位运算的用法直接对2进制进行运算,效率很高。(算法里面对速度的要求可以的话建议位运算)
- & 是同为1取1,不同取0.
- | 是有1则1
- ^是相同为0,不同为1
- 左移,右移的含义。
扩展赋值运算符
注意:偷懒用的。
三目运算符
包机制
注意:
1.包是可能嵌套的 package.().()
就是一个一个文件加
2. 学会导入包import
3. 包的取名方法(网站的倒过来)
4. *就是通配符
javados
1.使用文档注释编写的类
2.使用命令行生成javados文档
3.查看网页文档
注意:
当你变得很厉害的时候就可以来一份专属API。
你已经对java有了一定感情了
让我们进入下一步学习吧
首先
- 前面的东西看不懂是没有关系的
- 我们只需要懂得百度安装环境jdk8
- 我们还需要百度一个编程软件IDEA
基础实战篇
Scanner类
- 包:java.util.Scanner
- io流
- 循环注意会有等待(输入错误才会结束)
//导包
import java.util.Scanner
//实例化
Scanner scan=new Scanner(System.in);
//一些方法(nextInt())接收int
//该方法会卡住等用户输入
int a=scan.nextInt();
System.out.println(a);
//next nextline的区要懂
String str1=scan.next();//一个结束符
String str2=scan.nextLine();//下一行
//循环进阶
while(scan.hasNext()){
//一旦使用scan.hasnext()/scan.hasnextline()
//程序会判断用户输入的正确性
String str3=scan.next();
System.out.println(str3);
//如果你试验了一下发现卡住了一直输入
}
//凡是属于io流的一定要懂得关闭
scan.close();
几种结构
1. 顺序结构
一句一句往下运行
2.if选择结构
if(//布尔表达式){
//结果为true进入这里
}else{
//结果为false进入这里
}
//多分枝
if(//布尔表达式){
}else if(//布尔表达式){
}else if(//布尔表达式){
}else{
//结果为false进入这里
}
3.switch选择结构
switch(变量,结果,字符串){
case value ://可能结果1
break;
case calue :
break;
default:
}
4.循环结构
注意点:
- for( ; ;)死循环写法
- system.out.print("\t") 空格
- 换行
小练习
package Base;
public class 三角型 {
public static void main(String[] args) {
//打印5行三角型
//循环5次
for (int i = 0; i < 5; i++) {
for (int j =5 ;j>i ;j--){
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("*");
}
for (int i1 = 0; i1 < i; i1++) {
System.out.print("*");
}
System.out.println();
}
}
}
结果:
方法
注意:
- 形参 和 实参
- 方法重载
命令行传递参数
-
概念:main方法
public static viod mian(String args【】)是有一个参数的(数组)可以在程序运行时候传递一些参数,依靠cmd。 -
cmd (空格)
-
javac 编译(文件名)
-
cd…/ 返回src文件夹
-
java 包名 类名 参数
可变参数
package Base;
public class Demo1 {
public static void main(String[] args) {
add(1,22,3);
}
//可变参数
public static int add(int...i){
//(int... i)相当与数组
//看成 int 【】
//注意必须放在最后
System.out.print(i[0]);
System.out.print(i[1]);
System.out.print(i[2]);
return 0;
}
}
数组
arrays与冒泡排序法思想
注意:涉及算法思想!
稀疏数组(压缩空间)
思想:
- 有一个11行11列的数组
- 里面有大量为0的值浪费空间
- 使用压缩算法压缩空间
- 新数组忽略了0
- 第一行标记了几行几列几个有效数
- 接着每一行都是每一个有效值的位置和大小
推荐:去leetcode刷题。
面向对象编程
- 什么是面向对象?
- 面向对象对象三大特性?
- 抽象类和接口?
- 对象的创建?
- 内部类?
- 练习?
面向对象、面向过程
过程:就是一步一步的过程嘛,步骤清晰。
对象:就是把东西分类开,就是把一样的提取出来。
说明:
- 就是实例化后的,类就是抽象的。
- 封装:就是把某写东西包起来,留下一个给别人访问的口子。
- oop编程
- 本质:用类来设计方法,用对象处理数据。