标签:
2016年6月6日开始学JAVA
Java_Day01
JVM:虚拟机
JRE:JAVA运行环境 (JVM+类库)
JDK:JAVA开发工具包(JRE+JAVA的开发工具)
cd..返回上一层
cd\ 返回根目录
md 新建文件夹
del 删除文件夹
rd 删除文件夹
cls 清屏
set 显示windows所有环境变量
环境变量的使用:
JAVA_HOME=F:\JAVA JDK
Path=%JAVA_HOME%\bin //javac.exe的目录 javac执行一次变成class文件,变成JVM可以识别的文件.class
临时设置path(比如直接在U盘上运行,把JDK装在U盘上,在别人的电脑上运用)
(打开DOS不关闭,就可以设置临时环境变量)
set classpath
set path 查看环境变量
set path=hahaha 修改path为hahaha dos不关闭 一直使用环境变量
set path= 为空 删除path
set path=hahaha;%path% %path%是电脑之前自带的path环境变量
电脑会从左至右找path变量 找到了后面的就不会找了
如果.class文件不在.java文件同目录下
则改变classpath的class环境变量
set classpath=hahaha 在hahaha文件夹找
set classpath=hahaha; 在hahahah找完,再去原始目录找一次
set classpath=.代表当前路径
set classpath=.;hahaha 找了当前路径后再找hahaha路径 系统路径就不找了
一般情况下 不加分号比较好,加了分号如果找出其他相同名字的class 就运行的不是你想要(指定的)class文件 无法找出错误
JAVA_Day02
关键字:
红色字是java创建好的类
蓝色都是关键字 都是小写
类名的首字母大写是规范
标识符:
由26个字母组成、_、$、0-9数字组成
数字不可以开头
不可用关键字作为标识符
注释:
// 单行注释
/* */ 多行注释
/** */ 文档注释
// - /* */ 嵌套注释
/*222/*1*/22*/ 多行注释不能嵌套多行注释
// 运行到这就注释结束 还剩下 一个*/
注释部分没有占字节,没有占字节码,不会编译到class文件中去
注释的应用:
代码是思想的一种体现
常量和变量:
八进制--0开头
16进制--0x开头
byte字节==占用1个字节
一个字节==8个二进制bit位
八进制:2进制位中的 3个2进制位 为一个8进制位
负数:
是这个负数相反数的二进制取反+1
结论:负数二进制最高位都是1
long l=12345678; //数字本身是int型
long l=1234567890l; //数字本身是int型 加上l表示是long型
float m=2.3; 2.3本身默认为双精度
float m=2.3f;把双精度的2.3转换为单精度float
true false 是小写
视频13
面试题:
byte b=4;
byte b1=3;
byte b2=6;
b=b1+b2;
问:b是多少?
解释:整数都是int类型 4是int类型
b=4 系统默认做了强转 把int转换为byte
正解:b1 b2都是变量 不确定的,系统不知道b1是byte还是int,系统没有办法强转为byte 无法判断进行赋值
b1如果是127 b2是111 b就装不下这两个值的和 因为byte只有1个字节 b1+b2超过1个字节的最大值(127) 会丢失精度报错
运算符:
(-5%2)=-1 只对前面的数取余带符号
(5%-2)= 1
+是连接符
Java_Day03
面试题
&&和&的区别:
相同点:运算结果相同,运算过程有点小区别;都是布尔表达式的连接符,&可以用于位运算,&&不可以参与位运算
& :无论左边运算结果是多少,右边都参与运算。
&&:左边为false时,右边不参与计算。
03按位运算
一个数异或同一个数两次,结果还是这个数
6^3^3=6
它的应用相当于加密
6的取反~6是-7 6取反+1=7
04移位运算
<<左移位
3<<2=12 3*2(的2次方)=12
3<<3=24 3*2(的3次方)=24
左移几位 就是这个数乘2的几次方(幂)
>>右移位
右移几位 就是这个数除以2的几次方(幂)
>> 对于高位出现的空位 原来高位是什么就用什么补这个空位
比如原来高位是1表示负数 右移后 高位仍然是1
>>>无符号右移
数据右移时,高位出现的空位,无论原高位是什么,空位都用0补
一般都是用无符号右移 如果是负数 最高位是1 一直右移 无法消去 会出错
2*8的运算改成2<<3是提高效率的一种方法
面试的时候这样写
a b的值互换
a=3 b=5;
a=a^b;//a=3^5;
b=a^b;//b=(3^5)^5;
a=a^b;//a=(3^5)^3;
{
局部代码块;
}
这个括号很重要
局部代码块可以定义局部变量的生命周期
{
Int a=4;
Printf(“a”);
}//a占用的内存就释放了 节省内存 优化空间
If和switch的应用
If:
1.对具体的值进行判断
2.对区间判断
3.对运算结果为布尔型boolean的表达式进行判断
Switch:
1.对具体的值判断
2.值的个数是固定的
3.对于几个固定的值的判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高一点。
Java_Day04
\t 制表符
\r 按下回车键
\n 换号
\b 退格
Windows系统中回车符其实是由两个符号组成\r\n
在dos中 \r\n和\n都能识别 但是在一些软件中只能识别\r\n
Linux中回车符是\n
02函数格式
修饰符 返回值类型 函数名 (参数类型 形参1,参数类型 形参2.....)
{
执行语句;
Return 返回值;
}
函数名一定要提高阅读性
当出现函数名为两个以上的单词时:(规范)
第一个单词首字母小写 剩下的单词都是首字母大写
特殊情况:
功能没有具体的返回值;
这是return后面直接用分号结束
关键字返回值用void
如果是void类型 可以不用写return; 系统会自动加上return;
函数的特点:
**便于对该功能进行复用
**定义函数可以将功能代码进行封装
*函数只有被调用才会被执行
函数重载(overload)
概念:
在同一个类中,允许存在一个以上的同名函数,只要他们的参数个数或者参数类型不同即可。
函数取名根据功能而定。
函数的重载:
1.同一个类
2.同名
3.参数个数不同 or 参数类型不同
4.函数重载和返回值类型无关
5.Java是一个严谨性语言(强类型语言),如果函数出现的调用的不确定性,会编译失败报错。
6.形参顺序不同也是不同的重载函数
数组
数组里面默认值为0
内存的划分:
1.寄存器
2.本地方法区
3.方法区
4.栈内存
5.堆内存
栈内存:
存储的都是局部变量
而且变量所属的作用域一旦结束,该变量就自动释放。
局部代码块,限定局部变量的生命周期。
堆内存:
存储的是数组和对象(其实数组就是对象),凡是new建立在堆中。
特点:
1.每一个实体都有首地址。
2.堆内存中每一个变量都有初始化值,根据类型的不同而不同,
整数是0,
小数是0.0或者0.0f,
Char是 ‘ ‘ 空字符
boolean型是false
字符串是null
3.一旦不使用,垃圾回收机制,自动回收内存。
Java_Day05
数组的几种定义方式
Int[] arr = new int[3];
Int[] arr = new int[]{1,2,3,4,5};
Int[] arr = {1,2,3,4,5};
排序
Import java.util.*;
Arrays.sort(arr);
折半查找(要求已经排好序而且是小数组)
Import java.util.*;
Arrays.binarySearch(arr,50);//Java自带的折半排序
如果50存在,返回具体的角标
如果50不存在 返回 -应该插入点下表-1
加一个负号表示50不存在在这个数组中
再-1表示 如果要插入到0角标 会冲突 到底这个数是存在(0)还是不存在(-0)
所以减一区分
Integer.toBinaryString();//十进制→2进制
Integer.toHexString();//十进制 →16进制
integer.toOctal();//十进制 → 8进制
Java_Day06
面向对象(Java核心思想)
特点:(解释什么是面向对象思想)
1.面向对象是一种常见的思想,符合人们的思考习惯。
2.面向对象的出现,让复杂的问题简单化。
3.面向对象的出现,让曾经在过程中的执行者,变成了对象中的指挥者。
在java中,没有对象造对象,有对象了维护各个对象之间的关系。
(封装 继承 多台 面向对象的3个大特性)
用java语言对现实生活中的事物进行描述,通过类的形式体现。
怎么描述呢?
对事物主要关注两方面。
一个是属性,一个是行为。
类与对象的关系?
类:事物的描述。
对象:该类事物的实例。
描述小汽车
分析
1.属性。
a) 轮胎数
b) 颜色
2.行为。
a) 运行
定义类其实就是在定义类中的成员
成员:成员变量<-->属性 成员函数<-->行为
成员变量(对象)和局部变量(方法)的区别
1.
成员变量定义在类中,整个类都可以访问
局部变量定义在函数语句的局部代码块中,只在所属的区 域有有效
2.
成员变量存在于堆内存的对象中
局部变量存在于栈内存中的方法中(main)(方法有点像C中的函数)
3.
成员变量随着对象的创建而存在,随着人对象的消失而消失
局部变量随着所属区域的执行而存在,随着所属区域的结束而释放
4
成员变量都有默认的初始化值(null 0 false 0.0 ‘’)
局部变量没有默认的初始化值
默认初始化 & 显示初始化
类类型的变量一定要指向对象,要不就是NULL
匿名对象:没有名字的对象
Car c = new Car();//有名的对象
New Car();//匿名对象
1.当对象对方法仅进行一次调用的时候,就可以简化成匿名对象。
new Car().num = 5;
new Car().color = “black”;
2.匿名对象可以作为实际参数进行传递。
Show(new Car());
封装
Private 权限修饰符 只用于修饰成员
私有的内容只对本类中有效
私有仅仅是封装的一种体现而已
Java_Day07
构造函数:在构建创造对象时调用的函数。(只针对对象构造,无对象,不构造)
作用:可以给对象进行初始化。
特点:
1.函数名与类名相同。(首字母大写)
2.不用定义返回值类型。
3.没有具体的返回值。
一个类中,如果没有定义过构造函数,那么该类中会有一个默认的空参数构造函数。
如果在类中定义了指定的构造函数,那么类中的默认的构造函数就没有了。
一般函数和构造函数有什么区别呢?
构造函数:对象创建时,就会调用与之对应的构造函数,对对象进行初始化。
一般函数:对象创建后,需要函数功能时才调用。
构造函数:对象创建后,会调用只调用一次。
一般函数:对象创建后,可以被调用多次。
什么时候定义构造函数呢?
在描述事物时,该事物已存在就具备的一些内容,这些内容都定义在构造函数中。
一个类中可以有多个构造函数。(多个构造函数以重载的形式出现)
Person p = new Person(“xiao”);
调用Person
首先会系统默认初始化
然后,构造函数的初始化再来一次
最后,自定义的构造函数再走一次
细节1:
Person(String n)
Public void Person(String n) //加上一个void就变成了方法
可以同时拥有
第一个是构造函数初始化,只能使用一次
第二个是方法 可以多次使用
细节2:
在方法中不可以调用构造函数,因为构造函数只针对对象,无对象,不构造
细节3:
构造函数前面加上void 变成一般函数 不再是构造函数
细节4:
构造函数中自动有return;语句
This关键字的两个使用场景
1.当成员变量和局部变量,可以用关键字this来区分。
This:代表对象。代表哪个对象呢?当前对象。
This就是所在函数所属对象的引用。
简单说:哪个对象调用了this所在的函数,this就代表哪个对象。
2.This也可以用于在构造函数中调用其他构造函数,必须在其他构造函数第一行,因为初始化动作要先执行。
即:This(name);必须在this.age=age;的上面
Static (静态)关键字 也是一个修饰符
1.static是一个修饰符,用于修饰成员。
2.static修饰的成员被所有的对象所共享。
3.static优先于对象存在,因为static的成员随着类的加载就已经存在了。
4.static修饰的成员多了一种调用方式,就可以直接被类名所调用 。 类名.静态成员 。
5.static修饰的数据是共享数据,对象中的存储的是特有数据。
成员变量和静态变量(类变量)的区别?
1.两个变量的生命周期不同
成员变量随着对象的创建而存在,随着对象的被回收而释放。
静态变量随着类的加载而存在,随着类的消失而消失。
2.调用方式不同
成员变量只能被对象调用。
静态变量可以被对象调用,还可以被类调用。
3.别名不同
成员变量也称为实例变量。
静态变量称为类变量。
4.数据存储位置不同。
成员变量数据存储在堆内存的对象中,所以也叫对象的特有数据.
静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据.
静态使用的注意事项:
1,静态方法只能访问静态成员。(非静态既可以访问静态,又可以访问非静态)
2,静态方法中不可以使用this或者super关键字。
3,主函数是静态的。
标签:
原文地址:http://blog.csdn.net/qq_24653023/article/details/51685875