黑马程序员_java基础总结(1)

来源:互联网 发布:思迅商云8软件好不好 编辑:程序博客网 时间:2024/06/14 06:36

-------android培训java培训、期待与您交流! ----------

 

 

传智播客毕向东Java基础视频教程-day01-09-Hello World的组成部分000.jpg

 

Public  static void main(String args[])主函数的作用:保证类的独立运行,因为java工具

有一个命令,它会去调用虚拟机,虚拟机会调用Windons低层内容并运行你指定的类,

在此类中先找该主函数。是java虚拟机在调用它。是程序的入口。在一个主函数中是可以

存在多个类的,

1,  类里面不是必须要有主函数的,当你需要运行时,才写,不是类中都要有主函数!

2,  一个文件是可有两个类,这两个类可都有主函数,这两个类都具有独立运行的能力。

3,  注意有的操作系统是隐藏文件的后缀的,应通过“查看”把文件后缀给显示出来。

4,  当编译后出现:javac:找不到文件:1234.java  用法:javac <options><source files> _hepl 用于列出可能的选项         时,要末是输入的目录错了,要末是文件名错了。

 

传智播客毕向东Java基础视频教程-day01-10-注释000.jpg

 

Java注释内容提要:

1,注释的作用:注解说明我们的程序的。

2 ,分为很多种注释,java编译器是不会解析这一段代码的,作为一个文本存在。

3 ,当出现多行注释的时候,多行注释符  /*        */           单行注释  //

4 ,java有一种自己特殊的注释,这注释的作用是:对程序进行说明后,可以通过JDK当中的另外一项工具叫作javadoc.exe 将程序中的文档注释都提取出来,形成一个网页,这个网页相当于一个说明书,是给开发者用的,用户用的是使用说明书,书写形式 /**  /。

5 ,注释的第二个作用:调试程序,不让编译器执行该句。

6 ,单行中可以添加单行注释。多行注释中也可有单行注释,多行注释中不能有多行注释。否则编译有错。

7 ,写程序时,应一边写代码一边写注释,一定要养成这一个好习惯。

8 ,注释书写要求:一般类上用的是文档注释,函数上加的通常是文档注释,如果修饰符改变的话有可能加多行注释,代码当中的某几句话比较关键,或费解用单行注释,但不要每行都加。

9 ,要面试时,写代码也要写注释,,!!!不然这也是灾难!!!

10 ,代码仅仅是思想的一种表现,,要先写,文档注释!!!如:

     /*

     需求:定义一个Hello world 的小程序。

     思路:

     1,2,

     步骤:1,通过class关键字定义一个类,将代码都编写到该类中。

2,为了保证其的独立行动,在类中定义个主函数,格式为:

3,保存成一个扩展名为java的文件。

4,在dos控制台中通过javac工具对java文件进行编译。

5,在通过java命令对生成的class 文件进行,执行。

     */

11 ,写程序时,先写文档注释,,你没写出思想,又怎能搞出代码呢?

12 ,在EditPlus 中  蓝色表:关键字、修饰符。红色表:一个类,紫色表:字符串。

13 ,java中严格区分大小写,

 

-day02-01-标识符000.jpg

 

Java语言基础组成:

1 ,关键字:就是java中具有一定特殊意义的单词,,一般小写。

2 ,注释:单行,多行,文档,其它语言都支持单行,多行。

3 ,标记符:在程序中自定义的一些名称。规则:由26个英文字母大小写,数字0~9、数字不能开头,下划线,$组成。

4 ,java中main不是关键字,但被JVM能识别。

 

-day02-02-常量000.jpg

 

注意点:

1 ,字符:用单引号括住,里面只能有一个字符。

2 ,字符串:用双引号括住,里可放许多内容也可不放内容表示空。

3 ,null 空常量,只有一个数值就是null;

4 ,布尔型常量:只有两个数值:true    false ;

5 ,

 

-day02-03-进制的特点000.jpg

 

1 ,每个字节由八个二进制位组成。

2 ,计算机中其它进制的由来:为缩短计算机中的二进制位,更方便的表示数据。

3 ,八进制,三位二进制代表一位八进制。十六进制用四位二进制位代表一位。

4 ,计算机中无论什么数据全是二进制的!!!

5 ,,一个字符中最大值是255。

 

-day02-05-进制转换(八进制和十六进制)000.jpg

 

1 ,在计算机中为什么有二进制,八进制,十进制,十六进制,而没有奇数的进制没?

                                     因为,它们都是以二进制为幂的,

2 ,而变成32进制不行吗?怎样的话,会使它里面的元素太多,从而处理起来也不方便。

 

-day02-07-变量000.jpg

 

变量注意事项:

1 ,变量:就是将不确定的数据进行存储,也就是需要在内存中开辟一个区域,该区域有自己的名称(变量名)和类型,该数据可以在同一类型的范围内不断变化,作用:该区域用来不断的存放同一类型的常量,并可以重复使用。。

2 ,如何开辟内存空间:就是通过明确数据类型,变量名称,数据来完成的。

3 ,java是强类型的语言,每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间

4 ,整数默认类型为:int          小数默认类型为:double,主要作用是提高数度用的。

5 ,byte       8位    -128~127     -2(7)~2(7)-1       当超出它的值后,编译失败或溢出。

       Short      16位             -32768~32767

       Int        32位                    2(31)

       long       64位            

       float    32位              定义数值后应加上 f  如: float t = 2.0f; 如不加则是double

       Double   64位    

       Char    0~65535         在内存中占16位。

       Boolean  true   falses 

6 ,byte比较常用,可节俭内存空间、而short不常用。

7 ,CPU,优盘,硬盘、缓存越大越好,存指令集,读写存快

8 ,买硬件时应着重考虑。

9 ,定义变量格式              数据类型       变量名    = 初始化值

10 ,变量只需声明一次,它中的值可以被改变。

11 ,字符类型用单引号括住,在内存中占两个8位,         空格也是字符,也是字符串。

12 ,同一区间内不能定义同一个变量,,大括号就是区间。

13 ,什么时候定义变量:当数据不确定的时候,需要对数据进行存储时,就定义一个变量

       来完成存储动作。

 

-day02-08-类型转换000.jpg

 

类型的转换           内容提要:

1 , byte 默认占8位,而int 默认占32位,不同数据类型之间是不能直接进行数据运算的,对于整数类型来讲,它们会自动类型提升(自动向上转型)----à向大内存空间转换

2 ,byte  b = 3 ;        这句话来说,是把一个整形常量(3)赋给byte类型变量;b = b +2 ;这句话是说  :当一个byte型变量和一个整形常量相加时,变量或常量会自动向大空间的数据类型转换。而如果再要赋给byte b变量会发生编译错误,因为数据类型不能自动向下转换。应改为 b = (byte)(b+2); 但此时应注意:强制类型转换可能会丢失数据精度。如:

 

3 ,当字符类型和整数相加时,也会自动向大内存空间类型转换如:

   System.out.println(‘a’);  这句话打印 97

     System.out.println(‘a’+1);  这句话将打印 98

4 ,ASCII码中用一系列整型数字来标识一系列的字符,这是他们之间的对应关系。

5 ,当想看一系列的字符在ASCII码中对应的整形数据可利用自动类型转换或强自转换完成,如:System.out.println(‘1’+0);或System.out.println((int)‘1’);

6 ,可使用System.out.println((char)4);  来打印ASCII码中的特殊字符。!!!!!!

7 ,何时定义变量:当数据不确定的时候,需要对数据进行存储时,就定义一个变量来完成存储动作。

 

-day02-09-算术运算符000.jpg

 

 

算术运算内容提要:

1 ,int运算特例: int  x = 4270;  x = x/1000*1000;  System.out.println(x); 此句中因 x 和1000都是int类型的,所以运算完后,结果肯定也是int型的,当出现有小数时,应当舍去小数!

2 ,取模运算,求余运算特例:当%左边的数小于右边的数,取余结果还是左边的数。当%两边数相等时,结果为0,当右边为1时,结果为0;

 

3 ,面试题: System.out.println(1%-5); 得数为1     System.out.println(-1%5); 得数为-1

  System.out.println((12/1)%-5); 得数为: 2          System.out.println((-12/1)%5); 得数为:-2

  当有负数在进行取模时,只看%左边的符号位,若是正数则是正数若是负数则是负数。

 

4 ,此语言中编译将出错:注意:基本数据类型都需要进行赋值初始化,他们没有默认的初始化。

 

5 ,而此语句无错:

 

6 ,此语也会发生编译错误:

 注意:在表示字符串时,两个双引号是不能写在两行上的。

 

7 ,而此语句没有发生:

   注意:用+号可连接上下两行的字符串。


8 ,字符串数据和任何数据使用+都是相连接,最终都会变成字符串。看一下试题:

 

9 ,字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

-day02-10-转义字符000.jpg

转义字符内容提要:
1 ,转义字符:通过 \n 来转变后面字母或者符号的含义。
2 ,在Linux 中能直接识别 \n 而Windos 中有很多软件用\r\n来表示,而DOS中能直接识别 \n
3 ,带双引号的字符串的打印方式:用\” 来表示,转义字符都是反斜杠是写在前的。
4 ,用char 中能存两个字节,16位,而一个汉字占两个字节,说明用char也能容下汉字。
   例:
 
5 ,而如果 c 里有两个汉字 ,那么将会编译报错。提示不兼容类型。

-day02-11-赋值和比较运算符002.jpg

赋值和比较运算内容提要:
1 ,赋值的第一个知识点 , 面试题:
 
而如果写成下面这个程序,则可正常运行:
 
 这是以上两者的区别。
 在上者第一个中,short 4 和int 型 5相加后,数据自动进行向上类型转换,变为int型,而int型在变为short型是需要强制类型向下转换的,所以编译失败。而后者是一步完成的。
比较运算符注意事项:
1 ,比较运算符的结果都是boolean 型,也就是要么是true ,要么是false.
2 ,比较运算符“==”不能误写成了“=”;

-day02-12-逻辑运算符000.jpg

逻辑运算符:
1 ,java中是不允许出现如: int  x = 4;  6 > x >4 怎样的表达式的,应写成:6>x&&x>4;
2 ,逻辑运算符用于连接boolean类型的表达式
3 ,& :只要两边的boolean表达式结果有一个为false .那么结果就是false.只有两边都为
  True ,结果为true。
4 ,| :两边只要有一个为true ,结果为true.只要两边都有false ,结果为false .
5 ,^ :异或:就是和 | 有点不一样。 当true ^ true = false ;  true ^ false = true
  False ^ true = true ; false ^ false = false ,两边相同结果是false ,不同为true;
6 ,&& ,短路与,当左边为false 时,右边不运算,否则两边都运算。
   &:无论左边是true是false 。右边都运算,同时也可用于位运算。
7 ,| :两边都参与运算。 || :当左边为true ,右边不运算。


-day02-13-位运算符(左移右移)001.jpg

与运算符的使用:
1 ,在计算机中数值的位  运 算  都是针对二进制来说的!!!!!!!1!!!!!!!!!!!!!!!
2 ,在左移中,每左移1位相当于乘以2的1次方,右移就是除以2的位数次方。
3 ,当右移时,左边要补的数要依该原有数的最高位而定。(带符号的右移)。
  如果最高位是0 ,则补 0;如最高位为1,则补1 。
4 ,当有3个右移的符号时,左边一律补 0 ;(逻辑右移)

-day02-14-位运算符(与-或-异或)001.jpg

1 ,数值在计算机运行时,都是以二进制的补码形式来说运算的!!!!
2 ,二进制的最高位为符号位,0表正,1 表负 。
3 ,正数的 原 、反、补 码都是一样的。
4 , 负数的 反码 = 它的原码 符号位不变 ,其它位取反。
5 ,负数的补码 = 它的反码  +  1;
6 ,0 的反码 ,补码 都是 0 ;
7 ,算术右移:低位溢出,符号位不变,并用符号位补溢出的高位。
8 ,算术左移:符号位不变,低位补0 !!
9 ,逻辑右移:低位溢出,高位补0;
10 ,关于异或: 一个数异或同一个数两次,结果 还是那个数。
11 ,关于异或:可用来实现 加解密的功能。
12而取反运算符,表示,这个数的所有位都取反。

-day02-15-位运算符(练习)002 ,重点.jpg

1 ,位运算的高效原因,在于算法。
2 ,对两个整数变量的值进行互换(不需要第三方变量),①在开发中,第三方变量常用。
  ②,通过加完成  ,因其是int型,当两个数过大存在丢失精度的可能 !!!1
  ③,通过异或完成 。不存在丢失精度的可能,但阅读性差。
 

 
 
 

-day02-16-位运算符(练习2%26amp%3B三元运算符)001.jpg

1 ,条件运算符的结果 只能是 true 或false .
   在一定情况下用>>>符,编写进制转换时,高位应补0,如补1的话,将永补下去。
2 ,在三目运算符中,(条件表达式)?表达式1 :表达式2 ;   例:
  
 
注意:三目运算符中表达式3和表达式2类型不同时会进行,类型提升!它是一步完成动作的。但是它们的类型必须同是基本数据类型或同是引用数据类型。
 
  本题中:①字符属于基本数据类型,而字符串属于引用数据类型,两者是不能进行类型转换的② 同①因引用数据类型是不能强转为基本数据类型的。③ 而基本数据类型之间是可以进行相互的向上和向下转换的。
注意:三目运算符中表达式3和表达式2类型不同时会进行,类型提升!它是一步完成作的但是它们的类型必须同是基本数据类型或同是引用数据类型。

 

 而:
 
 而如果:
 


-day02-17-语句(if)001.jpg

1 ,如果if控制语句里只要一条语句,则可不写花括号。
2 ,三目运算符 和 if ..else ..的区别:
If ….else ..:运算完不需要返回结果,,,
三目运算符:运算完是需要返回一个结果的,格式为:
变量 = (条件表达式)?表达式1 :表达式2 ;
可简化 if …else.. 代码。
 
这题 ,,我不会,,,,,,,,,,,,,,,,,,,

-day02-19-语句(Switch)003.jpg

1 ,switch 中只能接收四种类型值:分别是 byte   short int char
2 ,switch 中default的位置可变,,但必须是所有case 都执行完后才执行default。
3 ,结束switch语句的两种情况:遇到break 结束,执行到switc语句结束。
3 ,看图003.

-day02-20-语句(Switch练习)006.jpg

1 ,Switch 与 if 的区别:1 ,if 可以判断区间,而switch判断区间时,将费力。
   对于运算结果是布尔型的,if能判断 而 switch 不能判断  !!
2 ,switch 和 if 何时来用呢?
①如果对具体数值,数值不多且是byte, int ,char ,short ,用switch来完成。因为它执行过程少、高效。
②当结果是布尔型或区间的话,应用if。
③JDK 7.0  有一个特点是switch 添加对String 类型的支持和判断。
④JDK 5.0  switch中可支持枚举类型的支持。
Break语句:应用范围:选择结构和循环结构。Continue语句:应用于循环结构。注意:①这两个语句离开应用范围,存在是没有意义的。②这两个语句单独存在时下面都不可以有语句,因为执行不到(编译失败)③continue 是结束本次循环继续下次循环。④标号的出现,可以让这两个语句作用于指定的范围。
3 ,for循环表达式里的执行顺序:①初始化表达式只读一次,②判断循环条件(注意:循环条件的返回值是布尔值,为假时退出循环③执行循环体中的操作④执行循环后的操作表达式。要想不死循环必须控制(循环条件);
4 ,while 与for 可以互换,区别在于for为了循环而定义的变量在for循环结束后就在内存中释放了,而while循环使用的变量在循环结束后,还可以继续使用。
5 ,最简单的无限循环格式:while(true),for(; ;),无限循环存在的原因是并不知道循环次数,而是根据某些条件,来控制循环。
6 ,do …while的特点:是判断条件无论是否满足,循环体至少被执行一次。

 


-day02-19-语句(Switch)000.jpg

1 ,Switch 与 if 的区别:1 ,if 可以判断区间,而switch判断区间时,将费力。
   对于运算结果是布尔型的,if能判断 而 switch 不能判断  !!
2 ,switch 和 if 何时来用呢?
①如果对具体数值,数值不多且是byte, int ,char ,short ,用switch来完成。因为它执行过程少、高效。
②当结果是布尔型或区间的话,应用if。
③JDK 7.0  有一个特点是switch 添加对String 类型的支持和判断。
④JDK 5.0  switch中可支持枚举类型的支持。

 

接口的出现增加了功能扩展,多态的应用提高了程序的扩展性。