A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

D.O..

初级黑马

  • 黑马币:

  • 帖子:

  • 精华:

© D.O.. 初级黑马   /  2018-4-1 19:32  /  787 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

JAVA技术贴
Java 特点:         跨平台 开源 有移植性
JVM  是java虚拟机java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因
此java语言可以跨平台 如坦克大战
JRE  jvm +类库 让程序运行起来
JDk  JRE   +   JAVA 开发工具
DOS
        d:切换盘符
dir:列出当前目录下的文件以及文件夹
cd (进入指定目录)
cd/ 退回根目录
cd..返回上一个文件
cls 清屏
exit 退出dos命令行
环境生成:
      创建新的变量名称:JAVA_HOME
        计算机-右键属性-高级系统设置-高级-环境变量-系统变量
        为JAVA_HOME添加变量值:JDK安装目录
        在path环境变量最前面添加如下内容
        %JAVA_HOME%\bin;

关键字特点  都要小写  如 public static void

常量 :  字符串  整数 小数 布尔 字符   java有常量优化机制
       
变量 : 是内存中的一小块区域.在程序执行的过程中,其值可以一定范围内发生改变
数据类型 1:基本数据类型 2:引用数据类型(类,接口,数组)
整数 byte         1        小数                字符    布尔
          Short 2        float4                char 2   boolean 1
          int         4        double 8
          long         8
long s=214748550L  在其值超过int 范围内加L
long 8字节小于float的4字节
   
标识符 A unicode字符
        数字字符 英文大小写字母,汉字(不建议使用汉字)
        B 下划线_    C 美元 $
   不能以数字为开头
   不能以JAVA中的关键字


常见的命名规则     见名知意
包 (其实就是文件夹,用于对类进行管理)
全部小写 多级包用.隔开 如 com, com.itheima

类  一个单词首字母大写 多个单词每个首字母单词大写

方法 变量 如果一个单词全部小写 多个单词从第二个单词首字母大写

方法内的定义是赋值的右边到所对括号

数据类型的类型转换:
隐式转换(自动类型提升) byte a=2;  int a=3; int c=a+b; =5

把取值范围小得变量byte提升为范围大的变量,然后与int做运算

强制转换 byte a=2;  int a=3; byte c=(int)(a+b)
目标类型 变量名 =(目标类型)(被转换的数据)
不建议强制转换,因为会有精度损失

byte b=10;
byte c=20;
byte f=b+c;
1.解释  因为他们两是byte类型,运算是会将byte提升为int类型,其结果为int类型如果将值赋值给byte会损失精度

2.解释 由于b和c都是变量 既然是变量,那么其值就不确定,那个他们的值也不确定,有可能超过了byte的取值范围,在赋值给byte就会出错,比如 byte f=240;超过范围

byte ,short  ,char ==>int ==>long ==>float==> double

运算符:对常量和变量进行操作的符号

运算符分类:

算术运算符 + - * / % ++ -- (字符参与加法就是把存储数据值来参与运算的) (字符串是字符拼接 从左到右 a=10 b20  a+b+"hello"  =30hello  反之在后就是hello1020) 'a'=65 'A'=97  '0'=48

赋值运算符 +=,-=,*=,/=,%=  扩展的运算符 隐含了强制类型转换

关系运算符 ==,!=,>,>=,<,<=

逻辑运算符& &&有false 则为false | || 有true则true  前面的不管满不满足都执行后面的 后面的有短路效果 前面满足不执行后面的  异或 相同为false 不同为true !非真 真就是假 假就是真

三元运算符   a>b ? true:false

关系表达式 条件表达式 布尔表达式  都是一种表达式 只是换了一种说法其结果都是boolean

% 左边的绝对值比右边小时 值为左
  左边的绝对值与右边相等或是他的倍数是结果为0
  左边的绝对值大于右边时 值为余数
  正负只与左边的值有关于右边无关
%2==0 可以为偶数奇数的判断 ==0偶 !=0奇
辅助键alt+/
main        然后alt+/
syso        然后alt+/
单行注释  选中内容 ctrl+/ 取消在ctrl+/
多行注释  选中内容 ctrl+shirt+/  取消ctrl+shirt+\
格式化                ctrl+shift+f        右键 sours format

shift+回车 直接下一行 不把字打下去

alt 加 上键 加下键 往上往下
键盘录入

A:导包(位置放到class定义的上面)
        import java.util.Scanner;
B:创建对象
        Scanner sc = new Scanner(System.in);
C:接收数据
        int x = sc.nextInt();



_Java开发工具(Eclipse工作空间的基本配置)(掌握)
* A:程序的编译和运行的环境配置(一般不改)
        * window -- Preferences -- Java
        * 编译环境:Compiler        默认选中的就是最高版本。
        * 运行环境:Installed JREs        默认会找你安装的那个JDK。建议配置了Java的环境变量(不配找不到)。
        * 问题:
                * 低编译(编译的版本比较低),高运行(运行的版本比较高)。可以。
                * 高编译,低运行。不可以。
                * 建议,编译和运行的版本一致。
* B:如何去掉默认注释?
        * window -- Preferences -- Java -- Code Style -- Code Templates--Code
        * 选择你不想要的内容,通过右边Edit编辑。
        * 注意:请只删除注释部分,不是注释部分的不要删除。

* C:行号的显示和隐藏
        * 显示:在代码区域的最左边的空白区域,右键 -- Show Line Numbers即可。
        * 隐藏:把上面的动作再做一次。
* D:字体大小及颜色
        * a:Java代码区域的字体大小和颜色:
                * window -- Preferences -- General -- Appearance -- Colors And Fonts --Java修改 -- Java Edit Text Font--edit进行修改
        * b:控制台
                * window -- Preferences -- General -- Appearance -- Colors And Fonts -- Debug -- Console font
        * c:其他文件
                * window -- Preferences -- General -- Appearance -- Colors And Fonts -- Basic -- Text Font
* E:窗体给弄乱了,怎么办?
        * window -- Reset Perspective
* F:控制台找不到了,怎么办?
        * Window--Show View—Console
* G:取消悬浮提示(将鼠标停留在某个类上所出现的提示信息)
        * window -- Preferences -- Java--Editor--Hovers。右边将Combined Hover勾去掉。
        * 这样代码的悬浮框就不会自动出现了。如果想看提示,将光标悬浮在代码上,按F2即可。
       
Random:用于产生随机数

使用步骤:
                  A:导包
                        import java.util.Random
                B:创建对象
                        Random r = new Random();
                可以这么写        Random random = new Random();
                C:获取随机数
                        int number = r.nextInt(10);
                          获取的是0-10之间的随机数,包括0,不包括10


数组 :存储同一种数据类型的多个元素的容器

定义格式  数据类型[] 数组名
          数据类型 数组名[]        int[] arr=new int[3] 能存储3个元素 索引=长度-1

int[] arr 定义了一个int类型的数组,数组名叫arr 推荐的
int arr[] 定义了一个int类型的变量,变量名叫arr数组

数组初始化 就是为数组开辟内存空间,并为数组中的每个元素赋予初始化
        我们有2种方法   
1动态初始化  直接给出数组长度 有数组初始化值
2静态初始化  直接给出数组每个元素是什么,但不给出长度

动态初始化 数据类型[] 数组名 =new 数据类型[数据长度]


堆 (存储的是new出来的东西) 使用完毕 会在有空的时候回收
栈 (存储的是局部变量)  使用完毕立即回收
局部变量就是定义在方法中的变量
堆 储存new出来的东西,实体,对象,每个对象都有地址值每个对象都有默认值 byte short int long  0
float double 0.0     char\u0000    boolean false    引用类型 null

静态初始化 数据类型[] 数组名 =new 数据类型[]{元素1,元素2,....}   
简化格式  数据类型[] 数组名 ={}  有局限性 为数组的声明与赋值分开写的时候简写形式行不通

常见问题:
A:java.lang.ArrayIndexOutOfBoundsException
                        数组越界异常
                        产生的原因:就是你访问了不存在的索引元素。
                B:java.lang.NullPointerException
                        空指针异常
                        产生的原因:数组已经不指向堆内存的数据了,你还使用数组名去访问元素。
当数组的地址值赋值为空的时候,再去访问他的时候不存在
遍历  数组名.length

二维
动态    数据类型[][] 数组名 =new 数据类型[m][n]
m表示的是二维数组中一维数组的个数
n表示的是一维数组中元素的个数

静态        数据类型[][] 数组名 =new 数据类型[][]{{元素1},{元素2}....}

简化 数据类型[][] 数组名={{元素1},{元素2}....}

arr[0][0]表示拿一维数组中一维的元素 元素=索引

二维数组.length 获取的就是二维数组中有几个一个数组个数
arr.length

二维数组 int[m][n] 后面那个n可以省略代表可以自己拟定个数 如果有数字代表每个一维数组里都要有几个元素

假如我有一个二维数组 arr
二维数组里的一维数组 arr[索引]
我要从中获取二维数组的元素 arr[索引][索引]

for(int i=0;i<arr.length;i++) i表示数组的索引,而索引是从0开始计算的,并且最大索引是arr.length-1
System.out.println(arr[i])  arr[i]表示数组中的每一个元素

流程控制语句分类
顺序结构 从上往下,依次执行

选择结构  if
语句格式一  if(关系表达式){语句体} 首先先看关系表达式的值是true还是false true就执行语句体false就不执行
语句格式二  if(关系表达式){语句体}else{语句体} 首先看关系表达式对还是错 错则执行下面的语句体
语句体格式三 if(){
                        输出语句
                }else if(){
                }else{}

        switch 格式
switch(表达式){
        case 值1:
           break;
        case 值2 :
           break;
        default :
           break;
}
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String               
case后面的值 就是来和表达式的值进行匹配的内容
break 表示中断
default 所有值不匹配是就执行default

default 不一定要放在最后,还可以在前面或者中间也可以,但还是从case开始运行,如果case后面没有break,会出现穿透,会执行里面的内容 遇到右大括号  如果按星期的话你打week4 可下面没有break,和default 那么 case 4: 会一直穿透在右大括号}

键盘录入 方式 1手动导入   2 Scanner sc = new Scnner(System.in);鼠标点叉叉    3.快捷键(推荐) ctrl+shirt+o

for(初始化语句;判断语句;控制条件语句){循环体语句}
   
自我理解 如果求和求个数之类的要定义一个量去接收 要放在循环体上面,不能放里面,因为在里面每次都会初始化,不符合,还有打印 看情况,在循环体里打是每成功一次打印一次,在循环体外就打印一次.  循环体内外打印要仔细思考 如 横着打印出 去掉print(ln)

初始化语句
while(判断条件语句){
循环体语句
控制条件语句
}

初始化语句;
   do {
         循环体语句;
         控制条件语句;
} while((判断条件语句);

do…while循环至少会执行一次循环体。
for循环和while循环只有在条件成立的时候才会去执行循环体

for 跟while  for循环结束后变量不能被使用了 而while循环后初始化值还可以被使用 他是在main方法的括号内

break 用于结束循环 x=3 他就只打印到2  在switch语句中 也可在循环中  离开这两个地方就没有意义  跳出当前所在循环

continue   只能在循环中用 离开循环没有意义 跳过本次循环继续下次循环

方法就是完成特定功能的代码块
方法定义分为两部分:声明 ,实现
声明:大括号前边的内容全部叫声明
修饰符 返回值类型 方法名(参数类型参数1,参数类型参数2.....)

实现:用大括号包起来的内容

定义格式 修饰符 返回值类型 方法名(参数类型 参数名,参数类型 参数名.....)
        方法体
        return 返回值

return 结束方法 把返回值返回给调用者


方法的调用 有明确返回值的方法调用
单独调用 没有意义
输出调用 有意义,但不够好,因为我可能拿结果就行别的操作
赋值调用  推荐的
sum(10,20);

输出调用
System.out.println(sum(10,20));

赋值调用
int s = sum(10, 20);
System.out.println(s);

方法的调用 方法不调用不执行,方法只有被调用,才会执行
方法的调用格式 方法名(实际参数)

如果一个方法没有明确的返回值类型,也不能吧返回值类型地方空出来应该写 void表示方法没返回值类型
方法()
void 调用方法 单独调用 不能赋值调用 跟打印调用
断点:        
其实就是一个标记,哪里不会加哪里,在代码区域左边双击即可加断点
private关键字:
是一个修饰符,可以修饰成员变量,也可以修饰成员方法被private修饰的成员只能在本类中被访问

String的常用构造方法:
        String(String original):把字符串数据封装成字符串对象
String(char[] value):把字符数组的数据封装成字符串对象
String(char[] value,int index,int count):把字符数组中的一部分数据封装成对String类的判断功能:
startsWith()判断字符串是否以指定的字符串开头
end With()判断字符串是否以指定的字符串结尾
contains 包含
isEmpty  判断  基本上 is开头的都是判断类型

String类的获取功能:
        int        length():获取字符串的长度,其实也就是字符个数
        char       charAt(in index):获取指定索引处的字符(可用于对字符串的遍历)
        int        indexOf(String str):获取str在字符串对象中第一次出现的索引
        String     substring(int start):从start索引开始截取字符串,默认到结尾结束
        String   substring(int start,int end)从start索引开始截取字符串,到end索引结束

String类的转换功能:
        char[]     toCharArray():把字符串转换为字符数组
        String     toLowerCase():把字符串转换为小写字符串
        String     toUpperCase():把字符串转换为大写字符串

String类的其他功能:
        String     trim():去除字符串两端空格
        String[]   split(String str):按照指定符号分割字符串(如字符串开头有分割元素,数组前会有一个空元素,当分割元素在结尾时数组结尾则没有空元素)

StringBuilder:是一个可变的字符串,可以减少垃圾

String和StringBuilder的区别:
        String的内容是固定的.
        StringBuilder的内容是可变的.

构造方法:
        StringBuilder()

成员方法:
        public int capacity():返回当前容量
        public int length():返回长度()

        容量:capacity
        长度:length

StringBuilder类的常用方法
添加功能:
        public StringBuilder append(任意类型):添加数据并返回自身对象
反转功能:
        public StringBuilder reverse()

添加功能演示:
       创建对像
        StringBuilder sb = new StringBuilder();

       public StringBuilder append(任意类型)
        StringBuilder sb2 = sb.append("hello")

        System.out.println("sb:" + sb);
        System.out.println("sb2:" + sb2);        System.out.println(sb == sb2);
       sb.append()   sb是对象,方法运行完还是一个对象,还能继续调用方法
       链式编程
        sb.append("hello").append("world").append("true").append(100);
        System.out.println(sb);
     结果:helloworldtrue100

集合类的特点:
        长度可变.        
        
ArrayList<E>:
        大小可变数组的实现
        <E>:是一种特殊的数据类型,泛型.
                    例:ArrayList<String>,ArrayList<Student>()
添加元素:
        public boolean add(E e):添加元素
        public void add(int index,E element):在指定的索引处添加一个元素
获取元素:
        public E get(int index):返回指定索引处的元素
集合长度:
        public int size():返回集合中的元素的个数
删除指定的元素:
        public boolean remove(Object o):删除指定的元素,返回删除是否成功
        public E remove(int index):删除指定索引处的元素,返回被删除的元素
修改元素:
        public E set(int index,E element):修改指定索引处的元素,返回被修改的元素
总的来说集合就是 获取 删除 修改 添加

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马