码迷,mamicode.com
首页 > 编程语言 > 详细

毕向东Java视频学习笔记

时间:2016-06-16 15:03:24      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:


201666日开始学JAVA

 

 Java_Day01

JVM:虚拟机

JREJAVA运行环境  (JVM+类库)

JDKJAVA开发工具包(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 修改pathhahaha dos不关闭 一直使用环境变量

set path=   为空 删除path

set path=hahaha%path% %path%是电脑之前自带的path环境变量

 

电脑会从左至右找path变量 找到了后面的就不会找了

 

如果.class文件不在.java文件同目录下

则改变classpathclass环境变量

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进制位中的 32进制位 为一个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类型 4int类型

b=4 系统默认做了强转 把int转换为byte

正解:b1 b2都是变量 不确定的,系统不知道b1byte还是int,系统没有办法强转为byte  无法判断进行赋值

b1如果是127 b2111 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占用的内存就释放了 节省内存 优化空间

 

Ifswitch的应用

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,主函数是静态的。 


毕向东Java视频学习笔记

标签:

原文地址:http://blog.csdn.net/qq_24653023/article/details/51685875

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!