我的java日记(基础上)

来源:互联网 发布:腾讯模拟炒股软件 编辑:程序博客网 时间:2024/05/16 06:57


我认为人生的意义在于不断的学习和进步,也只有这样才能实现自己事业和感情上的理想.
这几天通过从黑马网站上下载下来的视频,让我学到了很多的东西.下面是我这几天学到的,
也是让我以后更上一层楼的基础.奋斗

1:常用的dos命令
cls:清屏
md:创建文件夹  md abc 创建一个名为abc的文件夹
rd:删除文件夹
del:删除文件
cd..:退回到上一级目录
cd\:退回到根目录
exit:退出dos命令
time:更改当前时间
copy c:\abc\a.txt  c:\abc\b.txt 把a中的内容复制到b中去
2:JAVA 语言历史
James Gosling -->java之父(高司令)
1995 5 23日发布了java1.0
3:J2SE(Java 2 Platform Standard Edition) 标准版
  J2EE(Java 2 Platform Enterprise Edition) 企业版,主要针对于Web应用程序开发.
  J2ME(Java 2 Platform Micro Edition) 小型版


4:Java程序的特点:
  跨平台性:一次编译,处处运行.(通过JVM)
 

5:JDK中包含JRE, JRE中包含了JVM.
  JDK用于开发, JRE运行
  jre--->java 程序的运行环境
  jdk--->java程序的开发工具包
  jre+java development Tools=jdk

6:配置环境变量
  path(系统变量):让系统通过path路径找到运行的文件.
  classpath(用户变量):是针对于当前用户的.
  配置classpath时如果加分号:首先查找classpath下的类文件,如果该文件不存在, 在查找当前目录下是否有该类文件.
  配置配置classpath时如果不加分号,只查找classpath下的类文件, 如果该文件不存在,会出现错误信息.
  jdk1.5之后不需要配置classpath.
  classpath配置上必须以.;开头


7:用在dos中set命令配置临时环境变量
  set 查看当前所有的环境变量配置信息.
  set 名称=值  临时设置配置项信息
  set 名称=   清空指定项
  set 名称=值;%名称% 在path中加入值
 
8:JAVA_Home把jdk根目录变化的部分通过java_home确定下来.

9: .java文件通过javac.exe进行编译成.class  文件(二进制字节码文件),.class文件通过java.exe解释运行处结果.


10:源文件:后缀名是.java的文件
   class 是一个关键字,用来声明一个类.
   main 方法是程序的入口

11:标准输出语句:
   System.out.println("双引号内的内容原样输出");
   注意:
   *java语言严格区分大小写.
   *在程序中使用的符号要在英文状态下.
  

12:java中的名称规范:
   包名: 多个单词组成时所有字母都小写
   类名接口名: 多个单词组成时,所有单词的首字母大写,采用驼峰标识符
   变量名和方法名: 多单词时,第一个单词首字母小写,第二个单词开始每个单词首字母大写
   常量名: 所有字母都大写, 多单词时每隔单词用下划线连接.

13://单行注释
   /*多行注释*/
   /**文档注释*/

14:标识符:由数字,字母,下划线,美元符号组成,不能以数字开头,不能包含空格,长度无限制.
   关键字:具有特定意义的标识符.

15:System.out.print("");不换行输出
   System.out.println("");换行输出

16:常量:其值不可变的
   字符常量:单引号括起来的单个字符
   字符串常量:双引号括起来的字符串

17:整数的四种表现形式:
   二进制: 0,1  ,满2进1.
   八进制; 0-7  ,满8进1.
   十进制: 0-9  ,满10进1.   以0开头表示
   十六进制:0-9,A-F, 满16进1, 用0x开头表示.

18:8个位(bit)表示1个字节(byte).
  3个二进制表示1个八进制.
  4个二进制表示1个十六进制


19:十进制转二进制:
  进行除2取余操作, 15--->1111   , 12--->1100

  二进制转十进制:
  进行乘2的幂数操作:1100-->0*2(0)+0*2(1)+1*2(2)+1*2(3)=12
  也可以:1100方式
         8421-->对应数为一的相加,即8+4=12
 
  八进制,十六进制和十进制之间的转换通过转换成二进制过渡来转换.

  java中的数据类型:基本数据类型和引用数据类型

20:变量
    (1)概念:
     *是内存中的一块存储区域.
     *该区域有自己的名称(变量名)和类型(数据类型)
     *该区域的数据可以在同一类型范围内不断变化.

    (2)为什么要定义变量:
       用来不断的存放同一类型的常量,并可以重复使用.

    (3)整数类型{byte(1byte=8bit能表示256个byte类型,-128-127),
                 short(在内存中占2个byte,表示65535个short类型),
                 int(占4个byte,可以表示2的32次方个int数),
                 long(占8个byte,2的64次方个数,long型数据后要加上L)},默认类型是int,默认值是0
        浮点类型{float(以f结尾,占4个byte),double(占8个byte2*10(-308)-2*10(307))},默认类型是double
        字符类型(char,在内存中占2个byte,能表示0-65536之间的字符),一个汉字也是一个字符,所以也是占2个byte.
        布尔类型(boolean-->true,false),默认值是false
        
21:数据类型转换原则
    自动类型转换(隐式类型转换):占内存小的向占内存大的转换.
    强制类型转换:占内存大的向占内存小的转换.(会损失精度,要慎用)
     例:int i=10;
        byte b=(byte)i;

  精度从高到低: double float long int short(char) byte

22:运算符:
  (1)算术运算符:-(负),,++(自增),--(自减),+(加),-(减),*(乘),/(除),%(模)
  优先级:*,/,%  >  +(加),-(减)
  注意:如果两个数做运算要注意运算结果不要超出类型界限
       如果两个运算数数据类型一致,则结果数据类型也一致
       如果两个运算数数据类型不一致,则结果数据类型与精度高的一致
      *对于byte,short,char 在做运算时会先将其转换成int再参与运算.
           例:byte b1=1; byte b2=2; byte b3=(byte)(b1+b2);
       如果在%(模)运算时结果的正负只与被除数有关.如果左边数小于右边数,则结果就是左边数(即被除数).
  ++a:a先自加1再参与运算,a++:先参与运算后a自加1.
  --a:a先自减1再参与运算,a--:先参与运算后a自减1
      
  (2):赋值运算符 =,+=,-=,*=,/=
     +=等简化运算符在参与运算时在其内部会完成一个类型强制转换.效率比较高.即a+=10效率比a=a+10效率高
       short a=10; a=a+10;System.out.println(a);//此段程序会出错
       short a=10; a+=10; System.out.println(a);//能通过编译,不会出错.

  (3):连接符+,从左到有看
       System.out.println(2+2+"2");//结果是42
       System.out.println("2"+2+2);//结果是"222"
       System.out.println(2+"2"+2);//结果是222

  (4):关系运算符:==,!=,>,<,>=,<=,instanceof(检查是否是类的对象) 
      运算结果是boolean型,true或false.
      对于>,>=,<,<=只能操作数字
      ==,!=可以操作任何类型数据.

  (5):逻辑运算符:&(与),|(或),^(异或),!(非),&&(简洁与,只能操作布尔值),||(简洁或,只能操作布尔值)
      操作的是布尔类型变量
      与操作:两个都为真才为真,否则为假. &即可操作布尔值也可操作数,&&只能操作布尔值
      或操作:两个都为假时为假,否则为真. |即可操作布尔值也可操作数,||只能操作布尔值
      异或操作:^两侧一样时为假,不一样为真.  一个数异或另一个数两次还是这个数即6^5^5=6;
      非操作:非假为真,非真为假.
      &&操作:如果&&前的为false,则&&后面的不被运算.可能出现短路,,但是&&的运算效率比&效率高
      ||操作:如果||前的为true,则||后面的不被运算.可能出现短路
  
  (6):位运算符:操作二进制(1为真,0为假)
      <<(左移),>>(右移),>>>(无符号右移),&(位与),|(位或),^(),~(反码)
      ~:0变成1,1变成0.负数表示形式是正数取反加1.正数反码是其本身.
      >>:相当于乘以2的n次幂(n是移动的位数).  最高位为符号位,1为负,0为正
      <<:相当于每次除以2,如果高位是0用0补,如果高位是1用1补.
      >>>:被移时无论高位是1还是0,都补0.
      反码:
           正数:和源码相同
           负数:符号位不变,其余位取反.
      补码:
           正数:和源码相同
           负数:反码+1

  (7):三目运算符(必须得到boolean值)?(值[表达式]):(值[表达式])
      结果:如果第一个表达式(boolean)为真,那么结果为第二个表达式的值.
           如果第一个表达式(boolean)为假,那么结果是第三个表达式的值.

       例:通过三目运算符求两个数中的最大值.
             int a=10;
             int b=20;
             int c=(a>b)?a:c;   

23:java中关于流程控制语句的分类:
  (1)顺序语句
  (2)条件语句(分支语句)
  (3)循环语句

24:条件语句 if...else
  (1):if(条件boolean值){
         执行语句;
      } //如果条件成立执行语句.
  (2):if(条件){
   语句1;
       }else{
   语句2;
       }  //如果条件成立执行语句1,如果条件不成立执行语句2.
  (3):多层嵌套:
       if(条件){
   if(条件){
      语句1; 
   }
 }else if(条件){
   语句2;
 }else{
   语句3;
 }

   if应用的场景:
       A:对有限的值进行判断,但是
25:选择结构:switch(值) case
  switch(值)只能是byte,short,char,int,String(jdk1.7版本以后的可以) 数据类型.
  如果switch(值)与case后面的值匹配,那么就会执行该case后面的语句.如果都没有则会执行default后的语句.
  break:switch语句结束.
  if和switch的区别:
  switch语句可以被if语句替换,而switch不可以替换if语句.
  switch可以操作一个确定的值,而不可以操作以个区间的值.
  switch在特定的情况下效率比if的效率高.

例:
class  Demo1  //switch(值) case 语句的使用.
{
 public static void main(String[] args)
 {
  switch(2){
      case 1:System.out.println("星期一");break;
   case 2:System.out.println("星期二");break;
   case 3:System.out.println("星期三");break;
   case 4:System.out.println("星期四");break;
   case 5:System.out.println("星期五");break;
   case 6:System.out.println("星期六");break;
   case 7:System.out.println("星期日");break;
   default:System.out.println("请输入一个1-7的数");break;  //缺省值,如果没有和2匹配的则执行此语句.
  }
 }
}

26:while(条件){
 语句
 }
  执行时先判断条件是否成立,如果为true,执行语句;
  注意:要对条件进行改变,否则会出现死循环.

27:do-while
   do{
  语句
   }while(条件)
   首先执行语句,再判断条件.
 while和do-while语句的区别:
   条件如果不成立,while不会有执行结果,而do-while的循环体至少会执行一次.

28:for循环
  for(表达式1;表达式2;表达式3){循环体};
   表达式1:为初始化变量,只执行一次.
   表达式2:循环是否可以执行的条件.
   表达式3:对循环变量的改变.
   for循环中的表达式可以缺少,但是分号不能缺少.

循环:对条件进行多次判断时使用循环,
while:声明的循环变量在使用后,需要继续使用,建议使用while循环.
for:当循环变量胡紫薇递增存在时,建议使用for循环.
例:
class  Demo1  //for语句打印1-100以内所有被3与7整除的数,并统计个数
{
 public static void main(String[] args)
 {
  int i=0;      //定义计数器,用于存储1-100内可以被3与7同时整除的数的个数
  System.out.println("1-100内所有能被3和7同时整除的数是:");
  for(int j=1;j<=100;j++){
   if((j%3)==0&&(j%7)==0){
    i++;       //统计个数
    System.out.print(j+" ");
   }
  }
  System.out.println("\n一共有:"+i+"可以同时被3和7整除的数");
 }
}

应用场景:
  变量和语句的引用场景
  (1)什么时候使用变量?
   当使用的数据是不确定的时候,需要定义变量来存储数据。
  (2)什么时候使用if语句?
   当需要判断的时候,就要使用if。
   if语句的应用场景:
    A:对有限的值进行判断。 但是一般这个时候推荐使用switch。
    B:对结果是boolean类型的值进行判断。
    C:对范围进行判断。
     **对条件进行一次判断用if
     **对条件进行多次判断用循环
  (3)什么时候使用switch语句?
   对有限的几个值进行选择用switch。而且它只能接收byte,short,char,int类型的值。
   其他类型的值如果使用选择或者判断,用if。
  (4)什么时候使用循环语句?
   while:声明的循环变量在使用后,需要继续使用。
   for:当循环变量只为递增存在时,建议使用for循环。

29:break :结束循环.
        如果break单独出现,后面不可以有任何语句.
  continue:中断当次循环
        如果continue单独出现,后面不可以有任何语句.

30:函数(方法): 完成特定功能的代码块
  (1)格式: 修饰符 返回值类型 方法名(参数类表){方法体}
  (2)参数列表:接收外来数据,完成方法的功能. 
              实际参数;实际参与运算的数据.
              形式参数:用于接收实际参数.
  (3)返回值:如果一个方法有返回值,必须标注其返回值类型,方法的返回值类型可以是java中的任意类型. return 返回值,
     不可以一次返回多个数值,如果不需要返回值,使用void.
  (4)函数必须被调用,才执行.
  (5)函数的重载
         函数名相同,参数列表不同(数据类型和参数个数)

   注意:方法之间不能嵌套.
  (6)基本数据类型的传递,形参的改变对实参没有影响.
     引用数据类型的传递,形参的改变直接影响实参.

31:数组
  (1):数组:存储同一种数据类型的集合.也叫做容器.
    好处(特点):可以自动给数组中的元素从0开始编号,方便操作这些元素.
  (2):格式:
    (1)元素类型[] 数组名=new 数组类型[元素个数或数组长度];
    new:创建实例.
    (2)元素类型[] 数组名=new 数组类型[]{元素,元素,.....};
       元素类型[] 数组名={元素,元素,....};
    如果元素确定,就用后两种,如果不确定就用第一种定义格式.
  (3):数组操作的常见的问题:
     ArrayIndexOutOfBoundsException:越界异常
     NullPointerException:空指针异常
  (4):数组的常见操作:数组的操作离不开索引.
    (1)利用循环遍历数组元素.  数组名.length可以得到数组的长度.
    (2)获取最值.首先找一个参照物,让每个数组中的元素和这个参照物进行比较,通过循环遍历可以实现,
       当比较完毕后,最值就留下来了.

32:java中的内存机制:
  栈:
      栈内存的特点:存储的是局部变量(定义在函数内的变量).
                   局部变量被使用完毕后,就会自动释放空间.
  堆:通过new创建的实体都会在堆内存中.
      堆内存的特点:每个实体都有首地址值.
                   每个实体的数据都有初始值
                   整型的默认值是0,浮点型的默认值是0.0,布尔型的默认值是false,字符型的默认值是'\u0000' 空字符
     当实体不在被使用,也就是栈内存没有引用执行它的时候,就会被视为垃圾.会在jvm空闲的时候,启动垃圾回收机制进行回收.
  方法区
  本地方法区: 是windows调用的系统资源.
  寄存器: 是给CPU使用的.

 

原创粉丝点击