黑马程序员_Java基础知识

                                    

java基础知识

1、Dos命令:

  dir:列出当前目录下所有的的文件及文件夹

  md:创建目录 

  rd:删除目录 

  cd:进入指定mul

  cd\:返回到根目录

  cd..:退到上级目录

  del:删除文件

  exit:退出dos命令行

  *:通配符

  help:帮助命令

2、path系统变量:系统中应用程序所在的路径

  临时配置的环境变量的方式:用set命令完成  

  set:用于查看本机中所有环境变量的信息

  set 变量名:查看具体的一个环境变量的值

  set 变量名=:清空变量的值

  set 变量名=具体值:赋值

  在原有的环境变量的基础上添加新值

    set path=新值;%path%;

4、classpath:规定JVM到什么地方执行

  set classpath=" 路径 ";先到指定的路径找,在到当前路径找,所以不用“;”较好。

  set classpath=.,"路径"    先到当前路径找,再到指定的路径找

5、path和classpath的区别

  path是为了当前路径下运行当前路径的下Java文件,执行者是windows

  classpath实现的是当前路径下运行非当前路径下的class文件,执行者是JVM

6、main()

  A、程序的入口

  B、被JVM所调用

  C、保证了一个类的独立运行(其他类中也有main()也可以运行)  

注释

1、Java中特有的注释:

  /** 文档注释*/

2、 作用:

  A、解释说明

  B、文件调试

3、注释是不经过字节码文件的,所以加注释的Java文件经编译后大小不变。

关键字

特点:

  关键字所有的字母都小写

标识符

1、自己命名的地方都是标识符

  组成:26个英文字母大小写、数字:0-9,_和&;

  规则:数字不能开头

     区分大小写

     不能使用关键字

2、类/接口

  大驼峰式:当有多个单词时,每个单词首字母大写

 方法名/变量名

  小驼峰式:当有多个单词时,第一个单词首字母小写,第二个单词首字母大写

常量

1、常量的分类:

  A:字面值常量

    a:整数常量

    b:实数(这里专指小数)常量
        12.5,-65.43
    c:字符常量
      ‘a‘,‘A‘,‘0‘
    d:字符串常量
      "hello"
    e:布尔常量
      true,false
    d:空常量:不是类型,是一个数值
      null
  B:自定义常量
(3)常量可以直接被输出。

进制

十进制转换成其他进制:

    依次除以进制,直到商为0,到取余

其他进制转成十进制

    每位上的数字*进制^权值,再相加

    

数据类型

1、Java提供的基本数据类型:

    四类八种:

    整数:byte,short,int ,long

    浮点型:float,double

    字符型:char

    布尔型:boolean

 引用数据类型:

    类,接口,数组

2、各基本数据类型所占字节和表示范围

    类型 占用的空间 表示范围
byte    1字节 -128~127
short 2字节 -32768~32767
int 4字节 -2^31~2^31-1
long 8字节 -2^63~2^63-1
float 4字节 -3.403E38~3.403E38
double 8字节 -1.798E308~1.798E308
char 2字节 0~65535

注:布尔数据类型带包一个比特信息,但是它的大小是不确定的,如果非要说它的大小,就说是一字节。

  

  整数是精确数,浮点型是近似数;

类型的转换 

1、当byte、short、char类型进行计算时,会自动提升为int型;整数默认是int,浮点型默认是double;

    显示赋值,编译时可以直接判断是否在变量的数据范围内。如果在则编译成功。

    byte b=100;//成功

    byte  b=200;//失败

    显示赋值是浮点型,则会默认的必须为double接受。否则报错。如果要给float型赋值,则需要加f。

    float f=100.0//失败;

    double f=100.0//成功

    float f=100.0f//成功

2、boolaen类型不能转换为其他的数据类型;

3、对于long型变量,显示赋值时,会先判断是否在int型范围内,再赋值给long。原因是整数默认int型。所以如果数据过大的话,一般会在long型变量后加l或者L。

    long s=100;//成功

    long s=88888888888;//失败

运算符

1、算术运算符:

  +:

  A、数学意义上的加法

  B、指定一个数字为正数

  C、可以连接字符串

     两个字符串可以直接相加

     一个字符串直接加上数字,是将数字类型变成字符串在连接。

     一个数字可以直接加上字符串,是将数字类型变成字符串再连接。

     字符串不是直接和数字连接,则看运算规则

  %取模运算

    符合与被除数相同(第一个数)

    含有浮点型数据进行计算时,hi出现一个近似数

  /整除运算:

    两个整数相除得到其整数部分

    含有小数相除,则为数学意义上 的除法

    /和%含有浮点型运算时最好不改变数据类型

2、byte b=100;

  b+=10;//成功。像+=,-=,*=.%=这样的运算符有一步隐藏的强制转换:b=(byte)(b+10);

  b=b+10;//失败

3、逻辑运算符:

  短路与(&&),短路或(||):在能判断出结果的情况下,就不再判断了。

4、位运算符:

  对于以下四种运算符:,直接将0认为false,1认为true,计算规律与逻辑运算符的规律相同;

   & 有0则0;

   | 有1则1;

   ^ 相同取0,不同取1;

   ~ 所有1变0,0变1;

   左移<<: 将所有的数向做移动指定的位数,相当于乘以对应的进制数

   右移>>: 包含符号的移动,则前面是几,移出后空出的位就补几;相当于除以对应的进制数

   无符号右移>>> : 不包含符号的移动,即无论前面是几,都补0;

5、如何将2个数的值互换,使用位移运算符

  在位移运算中,当一个数异或另外一个数2次后,结果仍为这个数。

  int x=10,y=20;

  x=x^y;//x=x^y=10^20     y=y=20;

  y=x^y;//x=10^20        y=10^20^20=10;

  x=x^y;//x=10^20^10=20    y=10

程序的流程控制

1、选择结构:

  if语句的多重嵌套:

    要充分考虑边界值得问题;

    每种情况不要有重复的部分;

  switch语句:

    switch语句后面括号的变量数据类型有6种:byte、short、char、int、String、枚举

    switch语句中遇到break时,则跳出循环,否则,继续执行,直到switch语句结束,或者遇到break;

    break放在最后是不建议省略,放在前面时,必须要有break;

    case后面括号内必须使用一个值,不能使用区间,也不能使用逗号分隔;

2、循环结构:

   不同循环的使用场景:

    明确循环次数时,一般不使用for循环

    当不确定循环次数时使用while循环;

    一般不使用do-while循环,因为存在数据安全问题。

3、break和continue的区别:

   break是跳出本层循环

   continue是跳出当前的这次循环,进入下次循环

4、循环标号:

  可以在循环出去一个标号。

  格式为:

    标识符:循环

  使用标号,可以将内层循环的break直接跳出到外层循环。(continue同理,但较少使用)

函数

  独立的一小段功能代码块。

  函数与函数之间的关系是平等的,他们通常直接定义在类中,除非出现内部类,否则不定义在另一个函数内部。

  函数的好处:定义函数可以将功能代码封装,提高代码的复用性

  在void返回值类型的函数中,return可以省略,也可以写成”return;“形式。

函数的重载:

1、概念:

  参数的个数和参数的类型不同,函数名必须相同,与返回值类型无关。

2、注意事项:

  A、在调用重载函数时,会根据参数的类型进行函数的调用

    如果没有精确的匹配类型会找金斯顿类型匹配。如果没有,则报错。

    在寻找近似类型匹配的时候,会遵循隐式的类型转换原则:byte,short,char>long>double  

  B、函数的重载也在于参数的顺序是否相同。

  C、在函数重载时,只有参数名不同,那不是函数的重载,他们是相同的函数。

  D、判断函数是否重载,只看函数名是否相同,参数列表是否不同,与返回值类型无关。

内存结构

堆内存:

  数组和对象,通过new建立的实例存放在内存中;

  每个实体都有内存地址值

  实体中的变量有默认的初始化值

  实体不再使用时,会在不确定的时间被垃圾回收器回收。

栈内存:

  在方法内定义的变量都是局部变量

  局部变量均在栈内存中,使用完毕后所占的内存空间会自动的释放

数组

1、数组定义的格式:

    数据类型[]  数组名={具体内容}; int[] arr={1,3,5,6};

    元素类型[] 数组名=new 元素类型{元素个数或者数组};   int[] arr=new[13];

    元素类型[]  数组名=new 元素类型[] {元素1,元素2,元素3}; int[] arr=new int[]{1,24,5};

2、数组的长度: arr.length;

3、多个引用指向同一个对象,即多个变量指向同一个实例对象的堆内存地址。当通过其中一个引用修改了该实例对象,则其他变量访问这个对象时相应的值也被修改了。

4、常见的数组定义方式:

  A、int   [] arr=new int[5];//正确,不建议

  B、int arr[]=new int[5];//正确,强烈不建议

  C、int[] arr=new int[3]{1,2,4}//错误。因为指定了数组的长度,再显示赋值,可能会有不同的数组长度出现。

  D、int[] arr=new int[];// 错误。因为没有指定数组的长度不知道开辟多大的内存空间。

  E、int[] arr;//错误,因为没有初始化。

    int[] arr2=null;

    System.out.println(arr2);//正确,arr2有值,只不过为空

  F、int[] arr=new int[5];

    System.out.println(arr[3]);//正确

  G、int[] arr=new int[5];

     arr=null;

    System.out.println(arr);//正确

     System.out.println(null);//错误

  H、int[] arr=new int[5];

    System.out,println(arr);//正确,结果为一个地址值

  I、String[] str=new String[]{"1","2","3"};

    System.out.println(arr[3]);//错误,数组角标越界异常。

  J、int[] arr=new int[5];

   arr=null;

   System.out.println(arr[3]);//错误,空指针异常

 

二维数组

1、格式:

  A、int[][] aarr=new int[3][2];

    //3代表二维数组中有多少个一维数组,2代表一维数组的长度。

  B、int[][] arr=new int[3][];

    System.out.println(arr[1]);//null。

  C、int[][] arr=new int{{1,3},{2,4},{5,3}};

2、注意事项:

  A、为二维数组里面的一维数组赋值时,不能使用这种格式:arr[1]=new int[] {1,2};

  B、使用第一种格式要求所有一维数组的长度都相同

  C、使用.length同样可以查到二维数组中一维数组的长度

      int[][] arr=new int{{1,3},{4,6},{9,7}};

      arr.length=3;

      arr[0].length=2;

  D、int[] x,y[];//定义了一个一维数组x和一个二维数组y。

    System.out.println(x);//报错,未初始化

    System.out.println(y);//报错,未初始化

    x=new int[3];

    y=new int[3][];

  E、int[][]arr=new int[][2];//没有指定二维数组的长度,编译不能通过。

时间: 2024-11-06 18:37:43

黑马程序员_Java基础知识的相关文章

黑马程序员_java基础知识精华总结

本文总结了JAVA中的基础知识部分,具体包括:1.对象的初始化:2.2.继承时,对象的初始化过程:3.关于构造方法:4.有关public.private和protected:5.抽象类:6.final关键字:7.接口interface:8.多重继承:9.接口的嵌入:10.类的嵌入:11.异常类. 1.对象的初始化 (1)非静态对象的初始化在创建对象时,对象所在类的所有数据成员会首先进行初始化.基本类型:int型,初始化为0.如果为对象:这些对象会按顺序初始化.※在所有类成员初始化完成之后,才调用

黑马程序员_JAVA基础知识总结3

Java源文件的扩展名是.java,编译之后生成.class的文件.所有的类都有一个共同的继承祖先Object类 一个.java文件中只能有一个public类,一个public类只能定义在以它的类名命名的文件中 Implement关键字用来实现接口,类可以实现多个接口,继承使用extends 关键字 package(包)为了更好的组织java程序,包为java程序提供了一个命名空间,一个java类的完整路径由它的包和类名共同组成 Java类或者没有public关键字表示该类在它所在的包中可见,这

黑马程序员_JAVA基础知识总结2

IDE > Java Enterprise Edition Java SE >1.在JavaEE开发中,经常要使用到JavaBean.很多环境要求按JavaBean方式进行操作. IntroSpector: PropertyDescript/Introspector/BeanUtils 注解> Java源文件 2.RetentionPolicy.CLASS > 内存中的字节码 @Target元注解用于表示自定义的注解可以用在哪些地方,通过ElementType的枚举元素来指定 泛型

黑马程序员_Java基础_接口

------- android培训.java培训.期待与您交流! ---------- 0.接口知识体系 Java接口的知识体系如下图所示,掌握下图中的所有知识就可精通接口. 1.接口概论 1)接口概念 接口是从多个相似类中抽象出来的规范,接口中不包含普通方法,所有方法都是抽象方法,接口不提供实现.接口体现的是规范和实现分离的哲学.规范和实现分离正是接口的好处,让软件系统的各个组件之间面向接口耦合,是一种松耦合的设计.接口定义的是多个类共同的公共行为规范,定义的是一组公用方法. 2)接口与抽象类

黑马程序员_JAVA 基础加强学习笔记

一.面向对象 (一)继承  1.继承的好处: (1) 提高了代码的复用性. (2) 让类与类之间产生了关系,提供了另一个特征多态的前提. 注意: 子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super();  如果父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数. 如果子类构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类中的构造函数. 2.final特点

黑马程序员_Java基础加强(下)

8.注解类 注解相当于一种标记,加了注解就等于打上了某种标记,没加就等于没打特殊标记,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记就去干什么事,标记可以加在包.类.字段.方法,方法的参数以及局部变量上. 注解的应用结构图: 为注解增加属性 定义基本类型的属性和应用属性 在注解类中增加String color(); @MyAnnotation(color = "red") 用反射方式获得注解对应的实例对象后,再通过该对象调用属性对应的方法 MyAnno

黑马程序员_Java基础加强(上)

1.静态导入 静态导入是jdk1.5版本以后出现的新特性,一般是指导入静态方法,如:import static java.lang.System.out 是指导入系统输出的静态方法. 例: import static java.lang.System.out //导入java.lang包下的System类的静态方法out public class StaticImport { public static void main(String[] args) { int x=1; x++; out.p

黑马程序员——集合基础知识(泛型)

集合:泛型基础知识 泛型.(泛型就是类型参数化,默认的时object,虽然不用强制类型转换,这个就要你自己去写特性方法,比如compareto是string的特有方法吧,你可以写但是父类肯定调用不了) itnex t对象都是obj要使用对象的特性功能必须强.编译的时候没问题,因为都不知道你会传什么对象,你橙子也可以当作apple来传,设计的时候并不知道! 泛型作用.1.用于解决安全问题.运行时期出现的问题classcastexception转移到编译时期.2.迭代器里面的itnext()不用强转

黑马程序员——集合基础知识(Collection)

集合基础知识 数组:长度固定,可存基本数据和对象. 集合:只能放对象,不固定.容器也有共性,不断抽取成一个体系,集合框架.参阅顶层创建底层.顶层是collection.collection里有两个常见的接口,List和Set.常见集合有Arraylist,linkedlist,vector,hashSet TreeSet.为什么会出现这么多的容器呢,因为每一个容器对数据的存储方式都有不一样,.这个存储方式称之为数据结构!!因为他们的特点不一样 list因为有脚标存储和删除的效率很低,Set的效率