一、Java基础信息
程序(application):一组有序的指令集合
指令:就是命令的意思
java的组成:javase/j2se(java标准版),javaee/j2ee(java企业版)(13几种技术)
java的应用:internet程序(b/s)和桌面应用程序(c/s) browser
什么是java:是一种面向对象的高级编程语言
安装jdk ,下载,8
配置jdk:选中计算机右键属性->高级系统设置->环境变量->系统变量的path里配置jdk路径
验证jdk是否配置成功 开始->cmd->java -version
记事本开发程序的步骤
①编写:编写源文件Test.java 编译javac Test.java
②编译:字节码Test.class 运行java Test
③运行:运行结果
1.1java的基本结构信息
public class Test{
public static void main(String[] args){
System.out.println("你好");
}
}
public 公共的class 类static 静态void 无返回值main 主要的String 字符串System 系统out 输出print 打印
注意四点:
①类名的首字母要大写,要保证类名与文件名一样
②所有的括号要成对出现,遇到大括号的开始要缩进,大括号的结束要与其对应大括号的开始最前端对齐
③所有标点符号都是英文的
④每行只能放一句代码,每句以分号结束
打印:
System.out.print(); 只打印
System.out.println(); 打印+换行
转义\:反斜杠必须双引号
\t制表位
\n换行
注释:
单行注释 ://注释内容 添加和取消:ctrl+/
段落注释:/*注释内容*/ 添加:ctrl+shift+/ 取消:ctrl+shift+/
1.2数据类型、变量、运算符
数据类型、变量、运算符、类型转化 Scanner
标识符:凡是人为可以起名字的地方
java关键字:java自用的单词代表某种意义,所有 关键字都是小写的
1.2.1数据类型:
①整型 int:不带小数点的 数字,例如 5,15,20 ,-1都是整型数据
byte 1、short 2、int 4、long 8
②浮点型 double:带小数点的 数字:例如5.0,10.2,100.1 都是浮点型数据
③字符串型 String:双引号引起来的 0,1或多个任意字符 例如 "","我","☆abc@!我" 都是字符串数据
④字符型 char:单引号引起来的 单个任意字符, 例如:'a','1','@','我','☆'
⑤布尔型 boolean:描述现实中的两种的东西,他的值只有两个 true,false
1.2.2变量:
就是模拟现实中的容器,用来存取数据
变量的三要素:
变量名,变量类型,变量值
定义变量:int a = 10;
变量的三步走:
①声明变量:数据类型 变量名; 例如 int a;String s;char c;boolean b;double d; 造容器的意思
②赋值:变量名=数据; 例如: a =5;s="你好"; 装东西的意思
③取值(使用):System.out.println(变量名);例如 int b; b = a 取东西的意思
变量的命名规则(标识符):
①变量名只能有四部分组成(字母,数字,下划线_,美元符号$)任意组成,但数字不能开头
②不能与java关键字重名
③见名知意(语义化,在实际开发中有助于维护)
④驼峰标志(小驼峰:第一个单词小写,剩下接着的首字母大写)
注:声明两个同名变量导致编译错误
1.2.3运算符:
①赋值运算符 =
- 后面的给前面,后面的复制一份给前面
- 前面如果有值,扔掉,接受后面的值
②算术运算符:整型跟整型运算最终结果是整型,取整数部分
+ 加 - 减 * 乘 / 除
% 求余,求模,取余,取模
③关系运算符:最终结果是boolean
> < >= <= == !=
④逻辑运算符:两个只能放boolean类型
⑤一元运算符:两边只能跟数字变量
++ --
在前:先自+/-,再赋值计算
在后:先赋值计算,再自+/-
(注意:每次自增自减1。一元运算符在变量之后,先做别的运算,再将自身值+1,运算符在变量之前,先自身值+1,再其他运算)
三元运算符 这里不提
小括号()最高
赋值= 最低
1.2.4类型转换 :
注意点:①任何数据类型跟字符串相加往字符串去转
3.小转大为自动转换(大包含小的类型)
4.大转小为强制转换(大的类型比小大类型存在多余的部分)
②如果一个操作数为double型,则整个表达式可提升为double型
③默认是自动转换
强制转换:数值类型(整型和浮点型)互相兼容
(类型名)表达式
int a = (int)5.5;
目标类型<源类型(大转小)强转
自动转换:
double d = 5;//前有隐形的int
目标类型>源类型(小转大)自转
1.2.5Scanner(扫描仪):
代码阻塞,获取用户的输入,和输出打印语句长连用
Scanner in = new Scanner(System.in);
in.next();//不能得到带有空格的字符串
in.nextInt();// 接收整数
in.nextDouble();//接受多浮点型(双精度)
in.nextBoolean();//接受布尔型
in.nextFloat();// 接收小数(单精度)
in.nextLine();//可以获得空白
in.next();//不能得到带有空格的字符串
①random随机数
Random r = new Random();
r.nextInt(3);
Math.random() 范围 :[0.0,1.0)
(max+1-min)*Math.random()+min
②hasNextInt()
处理系统异常
2.循环
2.1单支结构:if
2.2双支结构if-else
多支:if-else if.....-else(范围小的写上面)
2.3switch选择结构
switch选择结构适用于条件判断是等值判断的情况
2.4while循环
③.equals()
方法用于判断 Number 对象与方法的参数进是否相等。
④为什么需要程序调试?
在编写程序过程中有时也出现错误,但不好发现和定位错误,
通过代码阅读或者加输出语句查找程序错误
当程序结构越来越复杂时,需要专门的技术来发现和定位错误,就是“程序调试”
1、程序调试的目的?
找出缺陷原因,修正缺陷
2、程序调试的主要方法?
设置断点、单步执行、观察变量
2.5do.....while
2.6for循环
⑤break:改变程序控制流
用于do-while、while、for中时,可跳出循环而执行循环后面的语句
⑥continue:只能用在循环里
跳过循环体中剩余的语句而执行下一次循环
break语句终止某个循环,程序跳转到循环块外的下一条语句
continue跳出本次循环,进入下一次循环
二、进阶版Java
1.面向对象oop(object orientend programming)
(面试题)1.0对象创建流程:p对象(p引用指向的这个对象)
流程步骤:堆里放着的是对象
栈里的p就是对象的引用/对象名(好比一个人有多个名字,栈---代名词)
Person p = new Person("小倩",20);:
第一步:先在方法区加载Person类
第二步:new: 先在 堆 里面开辟带有地址的一个空间
第三步:先对属性默认初始化 看Person类里有几个属性(age 0,name null)
然后显示的初始化,Person类里有对age赋值(age 90,name null)引用数据类型不能直接存放在栈中,基本数据类型可以。
第四步:Person("小倩",20) 对构造器(对 对象的初始化,而不是创建对象)进行处理
①把构造器里的形参与实参对应,把小倩给n,最后给name属性。
此时,在方法区的常量池里开辟一个空间有一个地址,小倩就放在这里。
与此同时堆里面对应的 属性地址 里的name属性 的属性值 就有一个对应的地址,此时这个地址就指向它。
就把name的null 换成小倩了。
同比:
把20传给a,a赋给age,此时age就换成了20。
第五步:new Person("小倩",20)加载完成后
在栈里开辟空间时 空间里放着p
把堆里的地址返回给p,p就是对象的引用
p就指向了堆里的对应的空间
⑦this关键字
指的是当前对象
this.类成员(成员变量和成员方法) 可以用在所有方法内
this(参数):他的意思调用本类的构造器,只能用在构造器里的第一行
如果本类没有指的是上一级,依次类推,知道object类。
⑧static关键字
静态的不能访问非静态的,非静态的可以调用静态的
同一时刻,该类的所有对象中该变量值都相同
static静态的 只能修饰类成员,一但修饰了类成员,类成员属于类,不属于对象
⑨super()
super 给编程带来的便利/细节 :
查找属性和下面的的查找方法一样的规则: