黑马程序员技术交流社区

标题: java第一阶段课堂笔记 [打印本页]

作者: guohong    时间: 2018-4-2 22:57
标题: java第一阶段课堂笔记
                黑马前两星期课堂笔记
  来黑马学习JAVA两个星期了,对前星期的内容做下总结,这里主要是我的课堂笔记,希望能帮助到看帖的朋友.
day01---java语言发展史,JVM,JRE,JDK三者关系,常用DOS命令,path环境变量配置,
后面都是一些概念性的东西:包括注释的概述和分类\关键字的概述和特点,常量\变量\数据类型.
这里面有个重点就是弄懂隐式转换和强制转换:
隐式转换(自动类型提升):byte 类型和long类型做运算,byte类型将自动提升为long类型  

强制转换;
目标类型 变量名 = (目标类型) (被转换的数据);注(要加括号)
byte b =10;
byte c = 20;
byte d = (byte)b + c ;


day02:运算符:

字符参与加法运算,其实是用字符在计算机中存储的数据值运算的
'A'     65
'a'     97
'0'        48
"abc" + 10 +20 ==> abc1020
10 + 20 + " abc" ==> 30abc

三元运算符:
条件表达式 ?表达式1:表达式2  *****

键盘录入;************
1.导包
import java.util.Scanner;

2.创建键盘录入:
Scanner sc = new Scanner (System.in);
3.接收数据:
int i = sc.nextInt();


day03:控制语句


day04:数组

Random基本使用:
Random sc = new Random ();
int a = sc.nextInt(100);             取值范围:[0,100)
数组:存储同一类型多个元素的容器;
元素:数组中的数据
数组动态初始化;
int [] arr = new int [5];
java内存分布图:

栈:******************************
存储局部变量,定义在方法中的变量.
使用完毕,立即回收

堆:
存储的是new出来的东西,实体,对象
A.每一个对象都有地址值
B.每一个对象的数据都有默认值
byte,short,int,long______0
float,double________0.0
char_______'\u0000'
boolean_____  false
引用类型___________null
C.使用完毕后,会在垃圾回收器空闲时回收

数组常见问题:
1.数组索引越界  (ArrayIndexOutofBoundsException)
2.空指针异常(NullPointerException)数组已经不再指向堆的内存了,


数组练习:  注: *******数组长度;数组名.length
1.遍历
2.求最值




二维数组:元素为一维数组的数组;

定义格式:
A.数据类型[][] 数组名;
B.
C.

初始化:
动态初始化:
数据类型[][] 数组名 = new 数据类型 [m][n]
m表示二维数组中一维数组的个数;
n表示一维数组中元素的个数;
静态初始化:
数据类型[][] 数组名 ={ {元素...},{元素...},...{}};
day05:
方法:
修饰词 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2){
            方法体;
        return  返回值;
}

调用方法:
方法名(参数1,参数2);

有返回值方法的调用:
A.单独调用没有意义
B.输出调用,有意义,
C.赋值调用



方法练习:
1.取最值
2.比较两个数是否相等
3.获取三个数最值;

方法没有返回值(返还给调用者)用void(例如:打印十次"你好")
void修饰的方法只能单独调用.
                print();

public static void print(){

}


方法重载:方法名相同
特点:
方法名相同,参数列表不同;
1.参数个数不同;
2.参数对应数据类型不同;




方法的参数是基本数据类型:
形式参数的改变不影响实际参数;

方法的参数是引用数据类型:
形式参数的改变直接影响实际参数;

方法练习:
1.数组遍历
2.数组取最值
3.数组元素求和
day06:一些练习题就不说了.



day07:面相对象

封装



类:
成员变量

成员方法

创建对象:   类名  对象名 = new 类名();
访问成员:   成员变量:对象名.变量名   成员方法:对象名.方法  


private封装:
私有的
修饰成员变量和成员方法
被修饰的只能在本类中被访问
提供对应的getxxx和setxxx方式访问


this:代表所在类的对象.
方法被那个对象调用,this代表那个对象;
如果局部变量名和成员变量名相同, 在局部使用时,采用就近原则.



构造方法:给对象的数据进行初始化

格式:   方法和类名相同
        没有返回值,连void也没有;
        没有具体返回值
调用:   类名 对象名 = new 构造方法();

构造方法注意事项:
A.如果没提供构造方法,系统默认.
B.如果给出了构造方法,将不提供;
成员变量赋值方法:
A.setXxx方法
B.带参构造方法


day08:字符串

sc.nextLine() 获取字符
数组(字符数组)->字符串:String s1 = new String(数组)
截取数组(字符数组):String s1 = new String(数组,开始截取的下标,截取多少个)

s1.equals 判断字符串值是否相等
s1.equalsIgnoreCase :忽略大小写比较
s1.startsWith()
s1.endWith()判断是否以某个字符串开头或结尾

s1.length()  获取字符串长度(字母个数)
s1.charAt(字符串索引)  获取指定索引处的某个字符
s1.indexOf(字符串):获取S1中,第一次出现参数中字符串的位置索引,如果没有,返回-1,
s1.substring(索引):从索引处截取字符串,一直截取到最后
s1.substring(索引,end):从索引出开始,到end处进行截取,包括索引,不包括end对应的字符

s1.toCharArray() :字符串变成字符数组
s1.toLowerCase();小写
s1.toUpperCase():大写

s1.trim():去掉左右两端的空格(不包括中间的) 小红   
s1.split(某个字符串):根据某个字符串,把原字符串分割成数组


StringBuilder sb = new StringBuilder()

sb.capacity() 获取sb容器的容量(理论值)
sb.length():获取里面字符串的长度

sb.append(内容):向字符串中追加数据(返回的是对象)
sb.reverse():字符串翻转

StringBuilder转成字符串
sb.toString();返回一个字符串
字符串转换成StringBuilder
new的时候,直接把字符串放进去就好了
new StringBuilder(字符串/字符串变量)

sb. charAt(int index) :获取指定索引处的某个字符
sb.  delete(int start, int end) 删除


day09:对象数组和集合





集合类:
长度可变

* 获取元素
*                 public E get(int index):返回指定索引处的元素
* 集合长度
*                 public int size():返回集合中的元素的个数
* 删除元素
*                 public boolean remove(Object o):删除指定的元素,返回删除是否成功
*                 public E remove(int index):删除指定索引处的元素,返回被删除的元素
                public E remove(str)从0索引开始删除第一个出现的字符串
* 修改元素
*                 public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
*/

集合遍历:
ArrayList集合的遍历
*                 通过size()和get()配合实现的


day10:IO流


输入流
从文件中读取内容  read
输出流
从内存中写入到文件中          write


FileWriters:输出流
A.创建输出流对象   
1.造文件,
2.造对象,
3.对象指向文件       
FileWrite fw = new FileWrite (d:\\a.dxt,true); true追加写入;
fw.write("abac");
//数据写到缓冲区  
B.fw.flush();   刷一下
//释放资源
C.fw.close();
相对路径:相对当前项目,在项目根目录
绝对路径:D:\\a.txt

void Write();

FileReader:输入流
FileReader fr =new FileReader(String fileName);
int read();    // 一次读取一个字符;
int ch
while ((ch = fr.read())!=-1){        //如果没有数据可读,返回-1  fr.read()返回的是字符代表的数字
syso ((char)ch);
}

fr.close();
char [] chs =new char[1024];
fr.read(chs),返回的是读取字符的个数;









欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2