Java语言的基础组成

一,关键字

定义:被java语言赋予了特殊含义的单词

特点:关键字中所有字母都为小写


二,标识符

· 在程序中所自定义的一些名称

· 由26个英文字母大小写,数字0-9 符号 _$ 组成

· 定义合法标识符规则

1. 数字不可以开头。

2. 不可以使用关键字

· 注意:在Java中严格区分大小写。并且在起名字时,为了提高阅读性,要尽量有意义。

· Java中的名称规范:

1. 包名:多单词组成时所有字母都要小写

2. 类名和接口名:多单词组成时,所有单词的首字母都大写

3. 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词每个单词首字母大写

例:newStr

4. 常量名:所有字母都大写。多单词时每个单词用下划线连接


三,注释

· 用于注解说明解释程序的文字就是注释

· 好处:提高了代码的阅读性

· Java中的注释格式:

1. 单行注释

格式://注释文字

2. 多行注释

格式:/* 注释文字 */

3. 文档注释

格式:/** 注释文字 */

· 单行和多行注释,被注释的文字是不会被java的虚拟机JVM解释执行的

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

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

· 初学者编写程序可以养成习惯:先写注释再写代码,可以将自己的思路以注释的形式体现出来,毕竟代码就是思想的一种体现形式


四,常量与变量

· 常量

· 常量表示不能改变的数值,java中常量的分类:

1. 整数常量,所有整数

2. 小数常量,所有小数

3. 布尔型常量,true & false

4. 字符常量,将一个数字字母或者符号用单引号 '  '  标识

5. 字符串常量,将一个或者多个字符用双引号 " " 标识

6. null常量,只有一个数值:null


· 对于整数:java有4种表现形式

1. 十进制: 0-9 满10进1

2. 八进制: 0-7 满8进1 用0开头

3. 十六进制: 0-9,A-F 满16进1 用0x开头

4. 二进制:0和1

a. 每个byte(字节)由8位二进制组成,所以一个字节的最大数就是二进制11111111(8个1),最大值255

b. 3位二进制代表一位八进制

c. 4位二进制代表一位十六进制


· 进制的基本转换

1. 十进制 二进制 互转

a. 十进制转成二进制 除以2取余数

例:6的二进制,6/2=3,没有余数,记0;3/2=1,余1;1不能再除以2了,再从小往上取,所以6的二进制数就是110。

b. 二进制转成十进制 乘以2的幂数

例:二进制的110转成十进制,右边开始数,也就是第一位是0,第二位和第三位数是1。算法:0*2的0次方+1*2的1次方+1*2的2次方。结果为0+2+4=6

所以:以此推出的二进制转换十进制的一个规律:第1位乘的数是1,第2位乘的数是2,第3位是4,第4位是8........而当二进制位是0的时候则不用进行计算。这是一个心算的方法。在八进制、十六进制的转换中尤为好用。

2. 十进制 十六进制 互转

先把十进制转换成二进制。再将二进制的每4当作1个单位来进行运算。

例:90的二进制是1011010,4位分开看就是0101-1010,0101就是十进制的5,1010就是十进制里面的10。但是十六进制没有10,所以转换成十六进制就是A。记90=0x5A

3. 十进制 八进制 互转

同理十六进制的互转,可以将十进制转换成二进制后,没3位二进制看作1位八进制。

4. 负数的二进制表现形式

对应的整数二进制取反+1。

例:整数6,int类型在内存中占4个字节。所以真正的表现形式是 00000000-00000000-00000000-00000110,取反+1就是-6的表现形式:11111111-11111111-11111111-11111111-11111010

所以:负数的二进制最高位都是1

· 变量

· 变量的概念:

1. 内存中一个存储区域:

2. 该区域有自己的名称(变量名)和类型(数据类型)

3. 该区域的数据可以在同一类型范围内不断变化

· 为什么要定义变量

用来不断的存放同一类型的常量,并可以重复使用

· 使用变量注意:

1. 变量的作用范围(一对{}中有效)

2. 初始化值

· 定义变量的格式:

数据类型 变量名 = 初始化值。

注意:格式是固定的。

· 理解:变量就如同数字中的未知数

· 数据类型

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

byte,1个字节,取值范围:-128~127

short,2个字节,取值范围:-2的15次方~2的15次方-1

int,4个字节,取值范围:-2的31次方~2的31次方-1,默认类型

long,8个字节,取值范围:-2的63次方 ~ 2的63次方-1;一般会用l标识

float,4个字节,单精度浮点类型,一般用f标识一下

double,8个字节,双精度浮点数

char,2个字节,用单引号标识


什么时候定义变量?

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

· 类型转换

· 自动类型转换:自动类型的提升

例:byte b = 3; int x = 4; x = x + b;//b会自动提升为int类型进行运算

· 强制类型转换:

例:byte b = 3; b = b + 4;//报错,整数4默认为int类型,b+4会自动提升为int类型。int类型的不能自动转换成byte类型

b = (byte)b + 4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b

· 类型转换的原理:

比如当byte类型遇到int类型,byte类型内存只占8bit,int类型占32bit,int的精度是大于byte类型的。所以byte可以自动转换成int类型,不会损失精度

而反之,int类型转换成byte类型时,由于高精度转换成低精度时可能会损失精度,所以java不会把你进行转换,如有需要,需自己做强转

· 什么用类型转换?

例1:运算的结果是小数,想保留整数部分的时候可以把小数强转成int类型

例2:System.out.println('a'+1); 输出结果是98,因为字符a在ASCII码表中,代表的数字是97。98在ASCII码表中代表的是b,当我们想让输出结果为'b'时,就需要做强制类型转换。System.out.println((char)(‘a'+1));


五,运算符

· 算数运算符的注意问题:

如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被摸数是负数就另当别论。

对于除号“/”,它的整数和小数除是有区别的:整数之间做除法时只保留整数部分而舍弃小数部分。例如:int x = 3510;x=x/1000*1000; x的结果是? 因为x的是int类型的,所以除以1000之后只保留整数部分,也就是3,再乘以1000.所以输出应该是x=3000

“+”除字符串相加功能外,还能把非字符串转换成字符串,例如:System.out.println(“5+5=”+5+5);//打印结果是? 字符串部分会是直接打印到控制台,后面的5+5会先计算结果后打印在控制台。所以打印结果是5+5=10;

· 自增和自减的注意问题

当++在前的时候,先算++。再算别的值;当++在后时,先算别的值,再算++

例:int a = 3,b; b = a++; System.out.println("a="+a+",b="+b); 的输出结果,就应该是a=4,b=3;因为b=a++这个函数中,++在后,所以先把a赋值给了b,a再进行自增运算。

· 赋值运算符

· 符号

= 、+= 、 -= 、 *= 、 /= 、%=

例:

int a,b,c; a=b=c=3;

int a=3;a+=5;等同运算a=a+5

· 思考:

short s = 3;

s = s + 2;
s += 2;
有什么区别?

s = s+2;会编译失败,因为s会被提升为int类型,运算后的结果还是int类型,无法被赋值给short类型

s += 2;//编译通过,因为+=运算符在给s赋值时,自动完成了强转操作。

· 比较运算符

比较运算符的结果都是boolean类型,也就是要么是true,要么是false

注意:比较运算符的 "==" 不能被误写成 "="


· 逻辑运算符

逻辑运算用于连接boolean类型的表达方式。在java中不可以写成3<x<6,应该写成x>3 & x<6

· ‘&’ 和 '&&'的区别:

a. 单&时,左边无论真假,右边都会进行运算

b. 双&时,如果左边为真,右边参与运算;如果左边为假,那么右边不参与运算

· ‘|’和'||'的区别同理,双或时,左边为真,右边不参与运算

· 异或(^) 与 或的不同之处是:当左右都为true时,结果为false


· 位运算符

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

<< :其实就是除以2的移动的位数次幂

>> : 其实就是乘以2的移动的位数次幂。最高位补什么由原来数据的最高位值而定。如果最高位为0,右移后用0补位。如果最高位为1,右移后用1补位。

>>> :无论最高位是什么,右移后都用0补位。

& :就是二进制的每位数进行与运算,例:6&3,就是二进制的110和二进制的011进行与运算,结算结果为010,就是2

| :与&运算同理。

^ :和&运算同理。一个数异或同一个数二次,结果还是那个数。

~ :反码,就是数字的二进制的0变成1,1变成0。

六,程序流程控制

· 判断结构

if语句:三种格式:
a. if(条件表达式) {
执行语句;
}

b. if(条件表达式) {

执行语句;

} else {

执行语句;

}

else匹配if有就近原则,当程序中出现多个if else时,else匹配距离最近的if

c. if(条件表达式) {

执行语句;

} else if(条件表达式) {

执行语句;

}  

........

else {

执行语句;

}

if语句的特点:

a. 每一种格式都是单条语句

b. 第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中

c. 条件表达式无论写成什么样子,只看最终结构是否是true或者false

三元运算符:

if else结构的简写: 变量 = (表达式) ? 表达式1 : 表达式2;

好处:可以简化if else代码

弊端:因为是一个运算符,所以运算完必须有有一个结果

· 选择结构

switch语句:
格式:
switch(表达式){
case取值1:
执行语句;
break;

case取值2:
执行语句;
break;

.......

default:
执行语句;
break;
}
switch语句的特点:
a. switch语句选择类型只有4种:byte short int char
b. case之间与default没有顺序。先执行第一个case,没有匹配的case执行default
c. 结束switch语句有两种情况:遇到break和执行到switch结束
d. 如果匹配的case或者default没有对应的break,那么程序会接着往下执行,运行可以执行的语句,直到遇到break或者switch结束

· 循环结构

代表语句:while,do while,for
while语句格式:
while(条件表达式) {
执行语句;
}
do while语句格式:
do {
执行语句;
} while(条件表达式) ;
do while的特点是条件无论是否满足,循环体至少循环一次。

for(语句格式):
for(初始化表达式 循环条件表达式 循环后的操作表达式){

执行语句;

}

 注:

afor里面的个体表达试运行顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复这个过程,知道条件不满足为止。

bwhilefor可以互换。如果需要定义循环增量,用for更合适。

c,变量有自己的作用域。对于for来讲,如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。

d,最简单无限循环:while(true)for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

 

总结:

什么时候使用循环结构?当对某些语句使用很多次时,就使用循环结构。

其他流程控制语句

break(跳出)continue(继续)

break语句:应用范围:选择结构和循环结构。

continue语句:应用于循环结构。

注:

a,这两个语句离开应用范围,存在时没有意义的。

b,这个两个语句单独存在下面都不可以有语句,因为执行不到。

ccontinue语句是结束本次循环继续下次循环。

d,标号的出现,可以让这个两个作用于指定的范围

for嵌套循环

for语句中还可以嵌套for语句进行输出,外面的for语句控制的是行数,内循环控制的是每一行的列数。
例:输出一个99乘法表
for(int x=1;x<=9;x++) {
   for(int y=1;y<=x;y++) {
      System.out.print(y+"*"+x+"="+y*x+"\t");
   }
   System.out.println();
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 第一章:Java开始 1 学习目标 1 Java历史 2 Java技术概述 3 Java技术的优点 3 Java虚拟机 4 类加载器 6 Windows环境变量 8 内容总结 13 独立实践 14 第二章: 面向对象概述 15 学习目标 15 面向对象(Object Oriented) 16 面向对象的主要特性 18 抽象(Abstraction) 18 封装(Encapsulation): 19 多态(Polymorphism) 20 面向对象的优点 22 面向对象的分析、设计和编程 23 面向对象语言的发展简史 26 内容总结 29 独立实践 30 第三章:面向对象的程序设计 31 学习目标 31 类和对象的描述 32 声明类 32 声明属性 33 声明成员方法 34 源文件的布局 36 包的声明 36 包与目录的布局 38 内容总结 45 独立实践 46 第四章: Java语法基础 47 学习目标 47 基本语法元素 48 Java关键字 49 基本Java数据类型 50 变量声明和赋值 52 引用(Reference)类型 52 存储器分配和布局 53 this引用 55 Java编码约定 56 运算符的优先级 58 升级和表达式的类型转换 62 独立实践 70 第五章:数组 71 学习目标 71 数组的描述 72 创建数组 72 多维数组 78 拷贝数组 80 内容总结 83 独立实践 84 第六章:继承 86 学习目标: 86 单继承(single inheritance) 87 访问控制 89 方法重载(method overloading) 91 方法覆盖(method overriding) 93 基于继承的多态实现 94 隐藏(hiding) 95 构造方法在继承中的使用 96 super关键字 97 包装类 97 toString( )方法 100 内容总结 101 独立实践 102 第七章:类的高级特征 103 学习目标 103 static关键字 104 final关键字 106 内部类 106 实例分析 110 抽象类,接口 115 内容总结 120 独立实践 121 第八章:异常 122 学习目标 122 异常的概念 123 异常的分类 123 实例分析 124 自定义异常 126 方法覆盖和异常 127 内容总结 129 第九章:基于文本的应用 131 学习目标 131 程序交互的几种方式 132 常用类方法说明 132 String的方法 132 正则表示式(Regular expression) 133 StringBuffer类 135 StringBuffer与String的区别 136 集合类的使用 136 实例分析 136 内容总结 153 独立实践 154 第十章:JAVA GUI概述 155 学习目标 155 GUI概述及组成 156 Swing优点 157 布局管理器 158 BorderLayout 159 GridLayout 161 CardLayout 162 GridBagLayout 164 实例分析 165 内容总结 172 独立实践 173 第十一章 线程 174 学习目标 174 线程的概念 175 线程状态和调度 ….176 线程中断/恢复的几种方式 178 创建线程的两种方式 179 线程的控制 180 实例分析 182 内容总结 189 独立实践 190 第十二章:高级I/O流 192 学习目标 192 I/O基础知识 193 字节流 193 字符流 194 节点流 194 过程流 194 基本字符流类 198 对象串行化 201 实例分析 203 内容总结 211 独立实践 212 第十三章:网络 213 学习目标 213 TCP/IP协议模型 214 基于Java的网络技术 216 DatagramSocket 219 InetAddress类的使用 221 扩展知识: 227 SocketChannel类 227 内容总结 229 独立实践 230 第十四章:数据结构与算法(上) 231 学习目标 231 算法(algorithm): 232 查找算法: 234 排序算法: 237 递归(recursive): 240 快速排序: 242 内容总结 245 独立实践 246 第十五章:数据结构与算法(下) 247 学习目标 247 数据结构介绍: 248 数组 248 逻辑大小和物理大小 248 链表 248 栈(stack) 249 队列: 250 树: 250 实例分析 252 内容总结 274 独立实践 275 第十六章:数据库(一) 276 学习目标 276 数据库的基本概念 277 数据的描述 277 数据联系的描述 278 数据模型 278 数据库三级模式结构 279 数据库三个范式 280 范式总结 282 创建数据库 283 创建表 287 内容总结 290 独立实践 291 第十七章: 数据库(二) 292 学习目标: 292 查询(从基本到高级) 293 模糊查询 293 排序 295 集合操作-并 296 集合操作-交 297 集合操作-差 297 常用函数 297 数据类型转换函数CAST和CONVERT 298 分组查询 299 五大约束 301 索引 303 数据库的备份与恢复 304 内容总结 308 独立实践 309 第十八章:数据库(三) 310 学习目标: 310 存储过程 311 触发器 313 函数 314 规则 314 事务 315 while语句 317 case语句 317 内容总结: 318 独立实践 319 第十九章: JDBC基础 320 学习目标 320 JDBC的概念 321 连接数据库的几种方式 321 JAVA编程语言和JDBC 323 JDBC编程的步骤 323 实例分析 325 内容总结 335 独立实践 336 第二十章:高级JDBC 337 学习目标 337 使用DDL,DML语言对数据库进行基本操作 338 查询数据库里的数据 339 预编译语句(PreparedStatement) 340 使用事务 341 事务的级别控制 343 使用存储过程 345 操作元数据 347 ResultSetMetaData(结果集元数据) 349 可滚动的和可更新的结果集 350 批处理更新 354 二进制大对象BLOB 357 RowSet 新特性 359 JdbcRowSet 360 FilteredRowSet 361 内容总结 363 独立实践 364 第二十一章:XML基础 366 学习目标 366 XML的概念 367 定义XML文档 368 命名冲突 371 使用前缀解决命名冲突问题 371 使用命名空间 371 命名空间属性 372 统一资源标识符 372 默认的命名空间 372 使用命名空间 373 XML 文档规则 374 XML Schema 379 Schema和DTD的区别: 380 Schema的数据类型 380 样式表(XSL) 384 CSS样式表 384 XSL样式表 385 XSL的基本结构 386 XSL的基本语法 390 节点选择语句<xsl:value-of > 392 循环判断语句<xsl:for-each> 392 条件判断语句<xsl:if> 392 内容总结 395 独立实践 395 第二十二章:使用Java解析XML 397 学习目标 397 解析器的介绍 398 DOM以及广义的基于树的处理具有几个优点 399 文档对象模型(DOM)解析实例 402 DOM对象 404 DOM解析的例子: 406 SAX解析实例 409 DOM4J解析实例 412 JDOM解析实例 413 JAVA操纵XML 实例讲解 414 通过JAVA写数据到XML里面 415 内容总结 418 独立实践 418 第二十三章:HTML基础 419 学习目标 419 知识要点 420 HTML元素 420 标签属性 420 HTML基本标签 422 标题元素 422 HTML格式 427 HTML实体 431 不可拆分的空格 431 HTML表格 439 表格 441 HTML列表 461 HTML图像 469 Img标签和src属性 469 HTML背景 475 内容总结 478 独立实践 479 第二十四章:HTML进阶 480 学习目标 480 知识要点 481 表单 481 HTML框架 488 框架 488 在子窗体中访问并控制父窗体中对象 493 内容总结 495 独立实践 496 第二十五章:JavaScript介绍 497 学习目标 497 JavaScript语言概况 498 JavaScript和Java的区别 499 基于对象和面向对象 499 解释和编译 499 强变量和弱变量 500 静态联编和动态联编 500 实例 500 内容总结 503 独立实践 504 第二十六章:JavaScript基础 505 学习目标 505 基本结构 506 JavaScript代码的加入 506 基本数据类型 506 常量 507 表达式和运算符 509 实例 511 JavaScript程序构成 513 事件驱动及事件处理 516 内容总结 519 独立实践 520 第二十七章:JavaScript进阶 521 学习目标 521 基于对象的JavaScript语言 522 对象的基础知识 522 this关键词 523 new运算符 523 常用对象的属性和方法 525 算术函数的math对象 527 创建新对象 529 JavaScript中的数组 532 实例 535 文档对象功能及其作用 538 document中三个主要的对象 539 文档对象的基本元素 541 窗口及输入输出 544 输出流及文档对象 546 简单的输入、输出例子 547 内容总结 551 独立实践 552 第二十八章: Servlet 553 学习目标 553 Java Servlet概述 554 Servlet能够做什么 554 Servlet的生命周期 557 Java Servlet API 560 Web上使用的HTTP Servlet 560 处理HTTP Servlet的关键方法 560 其它相关接口的说明 561 HTTP协议基本概念及其特点 563 获取Cookie 565 HTTP响应报头--Response 566 会话管理 566 Servlet过滤器 569 Servlet监听器 576 内容总结 579 独立实践 580 第二十九章: Jsp 技术 583 学习目标 583 JSP介绍 584 JSP语法 584 模板元素 588 指令元素 588 页面指令 588 标签库指令 593 脚本元素 593 动作元素 597 <jsp:include> 598 JSP内置对象 605 Session和Application对象 610 JSP的汉字问题的原理 611 自定义标签 613 标准标签的使用 618 内容总结 621 独立实战 622 第三十章:struts入门 623 学习目标 623 Struts简介 624 什么是应用框架 624 WEB框架所要解决的问题 625 建立简单的Struts应用 627 内容总结 636 独立实践 636 第三十一章:Struts基础 637 学习目标 637 MVC 638 struts框架的优势 639 Struts如何实现Model 2, MVC 639 Struts 控制流 639 Struts framework的工作原理和组件 642 Struts ActionServlet控制器对象 642 Struts Action Classes 642 搞定Action对象 643 处理异常 643 Action的分类 643 Struts Action Mapping 646 使用ActionForward导航 647 Struts ActionForm Bean捕获表单数据 648 ActionForm的处理流程 649 Struts的其他组件 652 内容总结 653 独立实践 653 第三十二章:配置Struts组件 654 学习目标 654 三个 XML文件和一个属性文件 655 Web应用部署描述符 web.xml 655 ActionServlet的参数的配置 656 应用资源文件 658 Ant构建文件 659 配置Tiles框架 660 内容总结 661 独立实践 661 第三十三章:Struts标记库 662 学习目标 662 Struts标记库taglib介绍 663 Bean标记 663 逻辑标记 665 转发和重定向标记 668 HTML标记 669 显示错误信息的标记 673 其他HTML标记 673 模板标记 673 内容总结 676 独立实践 676 第三十四章:Hibernate基础 677 学习目标 677 Hibernate简介 678 建立简单的Hibernate应用 678 通过 Hibernate API 操纵数据库 684 Hibernate的初始化 687 访问Hibernate的Session接口 688 Hibernate工作原理图 691 内容总结 693 独立实践 693 第三十五章: 映射继承关系 694 学习目标 694 域模型关系 695 继承关系树的每个具体类对应一个表 696 创建映射文件 696 操纵持久化对象 698 选择继承关系的映射方式 699 映射多对一多态关联 702 内容总结 705 独立实践 705 第三十六章:HQL介绍 706 学习目标 706 HQL的出现 707 进入HQL世界 707 聚合 708 分组 709 在Java中使用HQL 709 内容总结 712 独立实践 712 第三十七章 Spring介绍 713 学习目标 713 Spring简介 714 IOC控制反转 714 Spring的容器 715 AOP面向切面编程 715 AOP的专业术语 715 Spring事务管理 718 Spring与Struts整合 719 Spring与Hibernate整合 721 独立实践 724

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值