黑马程序员 Java 语言基础上

来源:互联网 发布:去除美图秀秀的软件 编辑:程序博客网 时间:2024/05/17 04:15

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------


第二章  Java语言基础

Java语言基础组成

 1关键字    2标识符       3注释     4常量和变量        5运算符        6语句           

7函数          8数组

 

关键字:

 

标识符:

(1)就是给类,变量,方法起名字。
(2)组成规则:
由数字0-9,英文大小写字母,$以及_组成。
(3)注意事项:
A:只能有组成规则规定的内容组成。
B:不能以数字开头。
C:不能是Java中的关键字。
D:区分大小写。
(4)常用的命名规则:见名知意,驼峰命名
A:包(文件夹,用于区分同名的类)
全部小写。如果多级包,用.分开。
举例:
com 一级包
cn.itcast 二级包
注意:www.itcast.cn(域名反写)
B:类和接口
如果是一个单词,首字母大写。
举例:Demo,Test,Student
如果是多个单词,每个单词的首字母大写。
举例:HelloWorld,StudyJava
C:变量和方法
如果是一个单词,首字母小写。
举例:main,name,age
如果是多个单词,从第二个单词开始每个单词的首字母大写。
举例:showName(),studentName
D:常量
全部大写,如果多个单词组成,用_连接。
举例:PI,STUDENT_MAX_AGE

 

注释:

(1)就是对程序的解释性文字。
(2)注释的分类:
A:单行注释
a:以//开头,以回车结束。
b:单行注释是可以嵌套的。
B:多行注释
a:以/*开头,以*/结束。
b:多行注释是不可以嵌套的。
C:文档注释(了解)
将来被javadoc工具解析,生成一个说明书。
(3)注释的作用:
A:解释程序,提高程序的阅读性。
B:可以调试错误。

对于单选注释和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。

 

对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。

 

注释是一个程序员必须具有的良好编程习惯。

初学者编写程序可以养成习惯:先写注释再写代码。

 

将自己的思想通过注释先整理出来,在用代码去体现。

因为代码仅仅是思想的一种体现形式而已。

 

作用:1,注解说明

         2,调试程序

格式  单行注释://

      多行注释: /*    */

         文档注释: /**   */

建议:写代码之前写需求,思路,步骤,养成一个良好的习惯,以后一旦思想确定,后面写代码就是行云流水。如下一个hello world程序:

/*需求:练习一个helloworld程序。 思路:1,定义一个类,因为java程序都定义类中,java程序都是以类的形式存在的,类的形式其实就是一个字节码文件最终体现。2,定义一个主函数。为了让该类可以独立运行。3,因为演示hello world,在控制台上看到该字样,所以需要使用输出语句完成。 步骤:1,用class关键字来完成类的定义,并起一个阅读性强的类名。2,主函数:public static void main(String[] args)这时固定格式的。jvm认识。3,使用输出语句:System.out.println("hello world"); 代码仅仅是思想的一种体现形式。 */class Demo{       //定义一个主函数,为了保证程序的独立运行。       publicstatic void main(String[] args)       {              System.out.println("helloworld");//这是输出语句,用于将括号中的数据打印到控制台上,ln可以在数据的结尾处换行。       }}


 

 

常量与变量

常量

(1)在程序的运行过程中,其值是不可以发生改变的量。
(2)常量的分类:
A:字面值常量
a:整数常量
12,-23
b:实数常量
12.5,-65.43
c:字符常量
'a','A','0'
d:字符串常量
"hello"
e:布尔常量
true,false
d:空常量(后面讲)
null
B:自定义常量(后面讲)
(3)常量可以直接被输出。

5:进制
(1)是一种进位的方式。X进制,表示逢x进1。
(2)Java中整数常量的表示
A:二进制 由0,1组成。以0b开头。JDK7以后的新特性。
B:八进制 由0-7组成。以0开头。
C:十进制 由0-9组成。默认就是十进制。
D:十六进制 由0-9,A-F(不区分大小写)组成,以0x开头。
(3)进制转换:
A:其他进制到十进制
系数:就是每一位上的数据。
基数:X进制,基数就是X。
权:在右边,从0开始编号,对应位上的编号即为该位的权。
结果:把系数*基数的权次幂相加即可。
B:十进制到其他进制
除基取余,直到商为0,余数反转。

 

变量

(1)程序的运行过程中,在指定范围内发生改变的量。
(2)格式:
数据类型 变量名 = 初始化值;


变形格式:
数据类型 变量名;
变量名 = 初始化值;


举例:
方式1: byte b = 10;


方式2: byte b;
b = 10;

理解:变量就如同数学中的未知数。

 

数据类型

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

(1)分类
基本类型:4类8种。
引用类型:类,接口,数组。(了解)
(2)基本类型
整型: 占用字节
byte 1
short 2
int 4
long 8
浮点型:
float 4
double 8
字符型:
char 2
布尔型:
boolean 不明确。可以认为是1个字节。

注意:
整数默认是int类型。long类型需要加L或者l后缀。
浮点数默认是double类型。float类型需要加F或者f后缀。
(3)类型转换
A:boolean类型不参与转换。
B:隐式转换(从小到大)
byte,short,char -- int -- long -- float -- double
C:强制转换(从大到小)
格式:
(数据类型)数据;

表达式的数据类型自动提升

 所有有byte型、short型和char的值将被提升到int型。

 如果一个操作数是long型,计算结果就是long型

 如果一个操作数是float型,计算结果就是float型

 如果一个操作数是double型,计算结果就是double型。

分析System.out.println(‘a’)与System.out.println(‘a’+1)的区别。

System.out.println(‘a’)打印的是a

System.out.println(‘a’+1)打印的是98,自动类型提升,把a转换成ASCII编码与1相加

 

面试题:

byte b = 4;

b = 3+7;

System.out.println(b);

打印出来10

byte b = 4;

byte b1 = 3;

byte b2 = 7;

b = b1 + b2;

System.out.println(b);

提示可能损失精度

byte b=4; 编译器在编译的时候,右边默认是整型,但是他会判断,这数字在不在byte字节这个范围之内,如果在的话,把这个4做了一个默认的强转,把最后一个字节赋到b中。

b1b2是变量,是不确定的值,不能检查。

int x;

int x1 =Integer.MAX_VALUE;

int x2 = 2;

x = x1+x2;

System.out.println(x);

不出错,打印出来是负数。

int是默认类型,一旦超出范围,底层有强制转换过程,只保留自己原有位,高位全舍弃。

 

运算符

(1)就是把常量和变量连接的符号,一般参与运算使用。
(2)分类:
算术运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
三元运算符

算术运算符 +,-,*,/,%,++,--


+:正号,加法,字符串连接符。
System.out.println("5+5="+5+5);//5+5=55
System.out.println(5+5+"=5+5");//10=5+5


%:取得余数
左边如果大于右边,结果是余数。
左边如果小于右边,结果是左边。
左边如果等于右边,结果是0。
正负号跟左边一致。


++/--:
++ 其实相当于把数据+1


单独使用:
在数据的前后,结果一致。

参与操作使用:
如果在数据的后边,数据先操作,在++/--
如果在数据的前边,数据先++/--,在操作。

 

赋值运算符 =,+=,-=,*=,/=,%=



int a = 10;
把10赋值给int类型的变量a。


a += 20;
把左边和右边的和赋值给左边。


注意事项:
a = a + 20;
a += 20;
结果是等价的,理解不是等价的。


因为+=这种运算符,内含了强制类型转换功能。
比如:
short s = 2;


s+=3;
等价于
s = (short)(s+3);

 

比较运算符

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


特点:关系运算符的结果都是boolean类型。
     请千万注意:== 不要写成 =

 

逻辑运算符

&与运算   |或运算  ^异或运算   !非运算  &&短路与运算  ||短路或运算

 

&:符号的运算特点:

             

              true& true = true;

              true& false = false;

              false& true = false;

              false& false = false;

              &:运算规律:

              &运算的两边只有有一个是false,结果肯定是false。

              只有两边都为true,结果才是true。

 

              |:运算特点:

              true| true = true;

              true| false = true;

              false| true = true;

              false| false = false;

              |:运算规律:

              |运算的两边只要有一个是true,结果肯定是true。

              只有两边都为false。结果是false。

 

 

 

              ^:异或 :和或有点不一样。

              ^:运算特点。

              true^ true = false;

              true^ false = true;

              false^ true = true;

              false^ false = false;

              ^异或的运算规律:

              ^符号的两边结果如果相同,结果是false。

                     两边的结果不同,结果是true。

 

              !:非运算,判断事物的另一面。

              !true= false

              !false= true;

 

              !!true= true;

 

 

              面试题:

              &&:

                     和&运算的结果是一样的。但是运算过程有点小区别。

 

                     &:无论左边的运算结果是什么,右边都参与运算。

                     &&:当左边为false时,右边不参与运算的。

 

             

              ||:

                     和|运算的结果是一样的。但是运算过程有点小区别。

 

                     |:无论左边的运算结果是什么,右边都参与运算。

                     ||:当左边为true时,右边不参与运算的。

位运算符

位运算是直接对二进制进行运算

<<左移运算   >>右移运算   >>>无符号右移运算   &与运算  |或运算    ^异或运算   ~反码运算

左移几位其实就是该数据乘以2的几次方。左移:可以完成2的次幂运算

右移几位其实就是该数据除以2的几次幂。右移:对于高位出现的空位,原来高位是什么就用什么补这个空位。

>>>:无符号右移:数据进行右移时,高位出现的空位,无论原高位是什么,空位都用0补。

一个数异或同一个数两次,结果还是这个数。

 

练习:

对两个整数变量的值进行互换(不需要第三方变量)

开发时,使用第三方变量的形式,因为阅读性强。

              intc ;

              c= a;

              a= b;

              b= c;

这种方式不要用,如果两个整数的数值过大,会超出int范围,会强制转换。数据会变化。

             

              a= a + b; //a = 3 + 5;a = 8;

              b= a - b; //3+5-5 = 3;b = 3;

              a= a - b; //3+5-3 = 5;a = 5;

面试的时候用。

              a= a ^ b; //a = 3 ^ 5;

              b= a ^ b; //b = (3^5)^5; b = 3;

              a= a ^ b; //a = (3^5)^3; a = 5;

三元运算符

格式:

(条件表达式)?表达式1:表达式2 ;

如果条件为true,运算后的结果是表达式1,

如果条件为flase,运算后的结果是表达式2

示例:

获取两个数中大数。

int x = 3, y = 4, z;

z = (x>y) ? x:y;  //z变量存储的就是两个数的大数。

 

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------