【名师课堂】Java面向对象开发

【名师课堂】Java面向对象开发

Java核心第二部
106课时 |
23947人已学 |
(24 评论)

加入学习
加入学习

二分查找法(折半查找,采用递归完成):

前提,数组先排序

 

 

[展开全文]

引用传递的本质是别名,别名存在栈内存中,一块堆内存可以被多个栈内存指向

 

没有任何栈内存指向的堆内存空间叫做垃圾空间。

GC(垃圾收集器)收集垃圾空间

 

[展开全文]
wangyunchuan · 2017-06-21 · 类与对象(引用传递初次分析) 0

堆内存空间:保存真正的数据,保存对象的属性信息;

栈内存空间:保存堆内存的地址,堆内存的操作权,可以简化理解为保存的是对象名称

new表示开辟新的堆内存空间,内存地址被栈保存着

一个栈只能存一个地址

只有引用数据类型会产生NullPointerExpection错误,以后出现了就根据错误的位置观察是否实例化

[展开全文]
wangyunchuan · 2017-06-21 · 类与对象(对象内存分析) 0
  1. 封装性:
  2. 继承性:
  3. 多态性(最为重要的)

 

OOA(面向对象分析)OOD(面向对象设计)OOP(面向对象编程)

[展开全文]
angelra1994 · 2017-06-21 · 面向对象简介 0

dgasdfasdf

[展开全文]
keepmoving68 · 2017-06-14 · 类与对象(对象内存分析) 0

字节与字符串的操作

将字节数组变成字符串:  new string (byte[])

 

 

字符串转字节数组:str.getByte()

字符串部分转字节数组:

 

 

字节不适合处理中文

[展开全文]

支持字符串与字符数组相互转换

 

字符串转字符数组:  str.toCharArray();

 

字符数组转字符串: new string(字符数组)

 

部分转换: new string (字符数组,起始index,长度)

 

 

如果返回值为boolean的,方法命名一般用is**命名

 

学习正则表达式!

[展开全文]

string类方法必须背下来!!!

 

(成员)field

(构造方法)constructor

(普通方法)Method

[展开全文]

字符串的使用 就采用直接复制的模式完成

字符串内容比较,采用equals()方法实现

字符串最好不要频繁改变

 

如下代码不该出现;

str+="hello"

 

字符串不适合频繁修改,否则会出现大量内存垃圾。

[展开全文]

string  str= new string ("hello");

会产生堆内存垃圾空间,且没有保存到string对象池中。

如何将其保存到对象池中?

string str= new string ("hello").intern( );

 

 

字符串两种实例化的区别:

直接赋值:只开辟一块堆内存,而且内容保存在对象池中,以供下次使用。

构造方法:会开辟两块堆内存,并产生垃圾堆空间,而且不能直接保存在对象池中

[展开全文]

字符串常量,是string类的匿名对象

 

日后开发过程中,如果要判断用户输入的字符串是否等于指定的字符串时,一定将指定字符串写在前面。。而不能将用户输入的字符串写在前面,因为要考虑用户没有输入内容的情况,这种情况,字符串为null,此时会出现空指针错误

比较操作的方法一:

数据接收的时候,要考虑用户没有输入数据的情况。

[展开全文]

string类能不能使用"=="?

“==”比较的是数值

如果str1余str2进行==;比较的是物理地址比较

内容比较用  equals();

 

所以string内容比较用的是  equals()方法

 

[展开全文]

string类对象实例化:

1:直接赋值实例化对象

2:

[展开全文]

对象数组;定义为数组的对象

 

对象数组往往以引用类型数据定义

 

对象数组定义的两种格式:

对象数组动态初始化 :

类名称 对象数组名称  []=new 类名称[长度]

对象数组静态初始化:

类名称 对象数组名称  []=new 类名称[]{ 实例化对象。。。}

 

 

动态初始化后,对象数组中的每个元素都是其对应数据类型的默认值

[展开全文]

数组查询:

遍历法;

 

 

二分法(折半查找法)(前提是数组排序):先找数据中间点,判断当前数据在前半部分还是后半部分。,然后再判断数据在新数组的前半部分还是后半部分。

 

实现二分查找(方法递归查找)

public static int binarySearch (int arr[],int from, int to,int key){

 

if(from<to){   //循环结束条件

int mid=(from/2)+(to/2);     //确定中间节点

if(mid==key){         //如果数据找到

return mid ;            //取得当前索引

}else if (key<arr[mid]){

    return binarySearch(arr,from, mid-1,key);

}else if (key>arr[mid]){

return binarySearch( arr, mid+1,to,key)

}else{

return -1}

}//

 

[展开全文]

数组反转

 

如果程序慢,CPU占量大。算法有问题。

空间占内存!代码有问题,浪费了内存空间。

 

 

二维数组转置:行列必须相等

 

 

二维转置:中间轴不变(x==y)

 

for(int x=0;x<arr.length;x++){

      for(int y=x;y<arr[x].length;y++){

          if(x!=y){

             int temp=arr[x][y];

             arr[x][y]=arr[y][x];

             arr[y][x]=arr[x][y]; 

         }

      }

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[展开全文]

数组排序(一般升序):八大排序方法

冒泡法;

 

[展开全文]

求数组,最值,均值,总和。

上述要求一定需要循环

 

主方法应该越简单越好。

 

数组的数据类型有局限性,数据类型必须相同

[展开全文]

数组排序的方法:Arrays.sort()

数组拷贝:A,B,将B的一段拷贝到A,则A是源

System.arraycopy(源数组名称,源数组拷贝起始坐标,目标数组,目标数字接受起始位置,拷贝长度)

 

[展开全文]

授课教师

讲师
阿里云开发者社区全面升级
一站式体验,助力云上开发!
进入新社区

相关课程

查看更多 >