Java笔记(day1~day6)
绪论:
java版本区别:j2ee (企业版) j2se(标准版) j2me(小型版)
java特性:跨平台
jvm、jre、jdk介绍:
- jvm(java虚拟机) 不同平台上装指定版本虚拟机,就能运行java程序
- jre(java运行环境) 包括jvm和java程序所需的核心类库
- jdk(java开发程序包) 包括jre
综上,所以安装jdk就可以了 使用jdk开发的java程序,交给jre运行
jre=jvm+类库 jdk=jre+java开发工具
dos命令行:dir列出目录 cd 改变目录 cd..后退 cd\根目录
md创建目录 rd 删除 del 删除(文件) *通配符
help寻求帮助,可以查用法
java -version用来在命令行中查看使用的java版本
环境变量表示方法:%变量名%
临时设置: path=haha(这个haha是代表任意值) 在当前命令行窗口有效 ; 删除时path=
正文:
/*demo演示的意思 println书写并换行
文件夹选项可以选择不要隐藏扩展名 classpath临时环境变量 classpath加;号在当前目录再找一次*/
java语言基础组成:
关键字:都是小写; 类名大写
标识符:数字不能开头,不可以使用关键字(标识符里有-和$符号)
注释://单行注释 /*多行注释*/ /**文档注释*/
注释可以嵌套,但多行不能套多行 javadoc可提取(java特有)
可以使用注释,进行逐段调试
注释的应用:/*需求:练习...思路: 1、...2、...3、...步骤:1、用class关键字完成定义;2、主函数:固定格式;3、输出语句*/
常量与变量:整数、小数、布尔、字符、字符串、null常量
进制 byte字节=8个二进制位
负数:四个字节表示
变量:变量作用范围(一对{}之间有效)
名字,类型,数据
格式:数据类型 变量名=值;
整数:byte(1位)、short(2位)、int(默认)(4位),long(8位)
小数:float(4个字节),double(默认)(8个字节)
字符:char(2个字节,一个中文正好两个字节)
布尔:boolean(只有true和false)
自动类型转换
强制类型转换(丢失精度)
字符+数,显示acsii码
字符类型运算过程(java底层用unicode码)
类型运算符细节(byte担心存不下,integer.max_value(int 型最大值))
算数运算符:算术运算符+ - * / %(取余) +(连接符)
++ --(在原来的基础上自加自减1)
赋值运算符:(=、+=、-=、*=、......)
+=不等于=......+......(+=在赋值中做了强制转换,=...+....是两步运算)
比较运算符:(运算完结果必须是true或者false)== != > < <= >=
逻辑运算符:&用于连接两个布尔类型的表达式
&与|或 &运算特点: ^异或:两边相同为假 !非
&&和&运算结果一样,但过程有点小区别 &右边始终参与,&&左为假,右不参与
||左边为真,后边不参与
位运算符:<<左移 >>右移 >>>无符号右移
左移几位就是乘以2的几次方,
右移:以前最高位是啥就拿啥补空位,右移就是该数据除以2的几次幂
无符号右移:右移,高位出现的空位用0补
两个数互换问题:1、引入第三方变量
2、a=a+b; b=a-b; a=a-b;
3、a=a^b; b=a^b; a=a^b;
三元运算符:(条件表达式)?表达式1:表达式2;
程序流程控制:顺序结构 判断结构 选择结构 循环结构
判断结构:if语句:1、if(条件表达式) { 执行语句; }
2、if(条件表达式){ 执行语句; } else{ 执行语句; }
3、if ........else if...........else if........ else
当if.....else......运算后有具体结果,可以用三元运算符代替
代码块:局部代码可以定义局部变量周期
switch(表达式){ case 取值1:执行语句;break; case 取值2:执行语句;break; default:执行语句;break;} (挨着大括号的break可以不用写)
循环结构:while(条件表达式){ 执行语句; }
do{ 执行语句;}while(条件表达式)
for(初始化表达式;循环条件表达式;循环后表达式)
其他流程控制语句:continue(继续);break(跳出);
函数:
定义在类中具有特点功能的一段独立小程序
函数也称方法;
可以将代码封装,复用;
定义思想错误;
内存加载进程; 栈的特点:先进后出
重载:(重复载入):在同一个类中,允许存在一个以上的同名函数,只要参数个数或者参数类型不同即可;
数组:
同一类型数据的集合,其实就是一个容器
格式1:元素类型【】 数组名=new 元素类型【元素个数或数组长度】;
int【】 arr=new int【3】;
格式2:元素类型【】 数组名=new 元素类型【】{元素,元素,...};
内存空间的划分:局部代码块;决定局部变量生命周期
堆特点:存储实体(一堆数据),不能消失;
栈:引入(指向)堆中的数据 引入(指针)
堆: 垃圾回收机制:自动不定时回收堆中的垃圾
当访问到数组中不存在角标时会发生异常
当引用型变量没有任何实体指向时,还在用其操作实体,就会发生异常
哈希值【数组 i int型
正向遍历,反向遍历,对角标操作
获取最值
排序(选择排序、冒泡排序、排序位置置换代码提取)
性能问题
面向对象:
三个特征:封装、继承、多态
对象:(名词提炼法)
用java语言对现实生活中事物描述,通过类的形式体现
对事物描述两方面:1、属性;2、行为
对象就是该类事物实实在在个体
引用数据类型参数传递
封装:
private私有,只在本类中有效,其他类就算创建对象也访问不到
public void 函数名(){ }
函数里边可以用if判断语句
隐藏实现细节、对象属性、仅对外提供公共访问方式
1、安全性;2、便于隔离;3、提高重用性;
私有仅仅是一种体现形式(封装的)
java语言中最小的封装体是函数
构造函数:特点:1、函数名与类名相同
2、不用定义返回值类型
3、没有具体返回值
作用:给对象初始化;
一个类中如果没有定义构造函数,该类中会有一个默认的空参数构造函数
一般函数和构造函数区别:
构造函数:对象创建时就会调用与之对应的构造函数初始化
一般函数:对象创建后,需要时才调用
什么时候定义构造函数
在描述事物时,该事物已存在就具备的一些内容,这些内容都定义在构造函数中;
构造函数,重载
参数类型,参数个数;
构造函数细节:1、对象改名:p1.setname("小强");
2、构造函数加void成一般函数;