黑马程序员技术交流社区
标题:
java基础辅导之我的笔记
[打印本页]
作者:
JYcainiao
时间:
2015-10-16 21:15
标题:
java基础辅导之我的笔记
今天是第一天课,课程比较简单,做了一些笔记,虽然作用不大,但也是为了以后回顾起来方便,希望版主不要删掉我的帖子啊 这都是我上课自己一个字一个字打出来的 记录我自己的学习路程
一、计算机
1、计算机 = 硬件 + 软件
2、软件 = 数据 + 指令
3、计算机语言
A:机器语言:0和1
B:汇编语言
C:高级语言:C C++ C# JAVA
4、人机交互
A:命令行方式
B:图形图像化方式
5、快捷键
win + D 快速显示桌面
Alt + Shift + N 新建文件夹
6、常用DOS命令【掌握】
d:回车 盘符切换
dir //列出当前目录下的文件及文件夹
md(make directory) //创建目录
rd(remove directory) //删除目录
cd(change directory) //进入制定文件夹
. //当前目录
.. //上一级目录
cd\ //退回到当前根目录
del(delete file) //删除文件
exit //退出dos命令行
cls(clear screen) //清屏
/ //正斜杠
\ //反斜杠
notepad //创建文件
删除带内容的文件夹
rd /s 文件夹名称 // 删除时询问一下
rd /s /q 文件夹名称 //强制删除
二、Java语言概述
1、java之父 詹姆斯·高斯林
Sun公司开发
Sun被Oracle公司收购
2、平台版本
JavaSE //标准版 winForm 微软开发桌面程序
JavaME //微型版
JavaEE //企业版
3、java特点
A:开源
B:跨平台
4、
JVM java virtual machine java虚拟机
JRE Java Runtime Environment java运行环境
JDK Java Development KIT java开发工具包
JDK>JRE>JVM
JDK中包含JRE 因为开发后要运行
5、跨平台原理
Java程序是运行在JVM里面的。编写的Java程序可以借助对应平台版本的JVM在不同系统平台上运行
三、HelloWorld案例和环境变量配置
class HelloWorld { //左大括号跟上一排 前面 加空格
public static void main(String[] args) {
System.out.println("Hello,World"); //碰到左大括号下一拍要缩 进 用Tab键
}
}
编译:javac HelloWorld.java--------> HelloWorld.class
运行:java HelloWorld
2.常见错误
A:文件扩展名
B:关键字大小写问题
C:大小括号好成对写
D:中英文标点符号问题
3.path的环境变量
A:作用:在任何路径下都可以访问jdk的命令
B:怎么配置
①计算机右键-----属性-----高级系统选项----高级----环境变量--系统环境变量---path--编辑---在最前面加上bin的路径,后面加个;
②新建
JAVA_HOME --- JDK根目录
path --- %JAVA_HOME%\bin;……
四.Java语言的书写格式(约定俗成)
A:大括号要对齐,并且成对写
B:左大括号前面要有空格
C:遇到左大括号要缩进 用Tab键
D:方法和程序块之间加空行让程序看起来清晰
E:并排续剧之间要加空格,例如for语句
F:运算符两侧加空格
五、注释、关键字、标识符
1、注释
用来解释说明程序
//单行注释可以用来嵌套
/*
多行注释不允许嵌套
*/
/**
文档注释
*/
2、关键字
描述:被Java语言赋予特定含义的单词
特点:组成关键字的字母全部小写
关键字注意事项
A:goto和const作为保留字存在,目前并不适用
B:类似Editplus这样的高级记事本,针对关键字有特殊的颜色标记,非常直观
3、标识符
概述:就是给类,接口,方法,变量等起名字时使用的字符序列
规则:
A:英文大小写字母
B:数字字符
C:$和_
注意事项:
A:不能已数字开头
B:不能是Java中的关键字
C:区分大小写
4、标识符常见命名规则
包(其实就是文件夹,用于解决相同类名的问题)
报名要求全部小写,一般都是公司的域名倒着写
例如: www.heima.com
com.heima.包的作用
类或者接口
如果是一个单词,要求首字母大写,如果是多个单词,要求每个单词首字母大写(驼峰命名)
例如: DemoStudent
方法和变量
如果是一个单词,每个字母都小写,如果是多个单词,从第二个单词开始首字母大写
例如: getName()
常量
如果是一个单词,所有字母大写,如果是多个单词,也是所有字母大写,但是用下划线分开。
例如: MAX
MAX_NUMBER
作者:
JYcainiao
时间:
2015-10-19 21:08
1、常量
①在程序的运行过程中,其值不可以发生改变的量;
②字面值常量
A:字符串常量 用双引号括起来的内容
B:整数常量 所有整数
C:小数常量 所有小数
D:字符常量 用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
E:布尔型常量 比较特殊,只有true和false
E:空常量 null(数组部分讲解)
③自定义常量(面向对象)
2、进制概述
①什么是进制
就是进制位,是人们规定的一种进位方法。对于任何一种进制--X进制,就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一,八进制就是逢八进一,十进制就是逢十进一,十六进制就是逢十六进一。
例如一周有七天,七进制,一年有十二个月,十二进制
②十进制的由来
十进制的由来是因为人类有是个手指
③二进制的由来
其实二进制来源于中国,请看史料记载
④八进制的由来
⑤十六进制的由来
⑥不同进制表现同一个数据的形式特点
3、不同进制的表现形式
①二进制的数据表现形式
由0,1组成,以0b(b可以大写也可以小写)开头
②八进制的数据表现形式
由0-7组成,以0开头
③十进制的数据表现形式
由0-9组成。整数默认是十进制的。
④十六进制额数据表现形式
由0-9和a-f(大小写均可)组成,以0x开头
例如:100的不同进制表现
二进制: 0b1100100
八进制: 0144
十六进制:0x64
十进制: 100
4、进制的转换
任意进制到十进制
系数:每一位上的数据
基数:x进制,基数就是x
权:在右边,从0开始编号,对应位上的编号即为该位的权。
结果:把系数 * 基数的权次幂相加即可
十进制到任意进制的转换原来
除基倒取余 除以基数得到余数 倒着取余数 就是该进制的表现形式
5、快速的进制转换法
①8421码及特点
8421码是中国大陆的叫法,8412码是BCD代码中最常见的一种。在这种编码方式中每一位二进制码的1都是代表一个固定数值,把每一位的1代表的十进制数加起来,得到的结果就是它所代表的十进制数码;
1 1 1 1 1 1 1 1
128 64 32 16 8 4 2 1
②通过8421码的方式进行二进制和十进制的相互转换
③二进制到八进制的简易方式
二进制从右开始,每三位对应一个八进制数的位,不足补0
④二进制到十六进制的简易方式
二进制从右开始,每四位对应一个十六进制数的位,不足补0
6、原码 反码 补码【计算机在对数据进行存储和运算的时候,都是以补码额形式操作的。】
①为什么要学习原码反码补码?
后面要学习强制类型转换,如果不知道有元反补会看不懂结果。
②有符号数据表示法的几种方式
原码
就是二进制定点表示法,即最高位符号位,“0”表示正“1”表示负,其余位表示数值的大小
通过一个字节,也就是8个二进制位表示+7和-7
0(符号位) 000 0111 +7原码
1(符号位) 000 0111 -7原码
反码
正数的反码与其原码相同;负数的反码是对其反码逐位取反,但符号位除外。
0(符号位) 000 0111 +7反码
1(符号位) 111 1000 -7反码
补码
正数的补码与其原码相同;负数的补码是在其反码的末位加+
0(符号位) 000 0111 +7补码
1(符号位) 111 1001 +7补码
正数 正数的元反补都一样 负数 负数的元反码有区别
+7 -7
原码 0 000 0111 1 000 0111 原码和对应的正数最高位不一样 为1
反码 0 000 0111 1 111 1000 反码最高位不变 其余数值位取反
补码 0 000 0111 1 111 1001 补码在原码的基础上末位+1
7、变量的概述及格式
①什么是变量?
在程序执行的过程中,其值在指定范围内可以发生改变的量
②变量的定义格式
⑴数据类型 变量名 = 初始化值;;
⑵数据类型 变量名;
变量名 = 初始化值;
③为什么要定义变量
用来不断的存放同一类型的常量,并可以重复使用。
8、数据类型的概述和分类
①为什么有数据类型
java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
②java中数据类型的分类
A:有基本数据类型和引用数据类型
a、基本数据类型(4类八种)
⑴整数型 占用内存 大小范围
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 (如果long类型要加L进行标识,最好加L,因为小写l很像数字1)
⑵浮点型
float 4个字节 -3.403E38~3.40E38 E是10的基数 后面的308是次幂
double 8个字节 -1.798E308~1.798E308 (小数默认是double类型的,float类型需要在数据后面加f)
⑶字符型
char 2个字节 0~65535 可以存储一个汉字,因为汉字也是两个字节
⑷布尔型
boolean 1个字节 true,false
⑸注意: 整数,默认类型是int,如果要定义long类型时,最好在后面加个大L标识,防止定义数值大于int造成错误。
小数,默认类型是double,如果要定义float类型时,必须在定义数值后面加个f标识。
引用数据类型(接口,)
面向对象部分讲解
作者:
JYcainiao
时间:
2015-10-19 21:09
9、数据类型转换
隐式转换(从小到大会自动转换)
当小的数据类型和大的数据类型进行运算时,小的数据类型会自动提升为大的数据类型,这就是隐式转换
byte,short,char --> int --> long --> float --> double
强制转换(从大到小须强制转换)
当要把大的数据类型赋值给小的数据类型是,需要加上强转符号-->()括号里面写小的数据类型。
【注意:byte,short,char之间不能进行隐式转换,因为他们进行运算时,都是自动提升为int类型进行运算的。】
10、面试题
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2; //编译出错,可能损失精度;
byte b4 = 3 + 4; //编译通过,运行b4 = 7;
原因: byte b3 = b2 + b1;
A:【byte与byte、short、char进行运算的时候,都会自动提升为int类型进行运算】,两个int类型的变量相加,结果还是int了性,把大的int类型赋值给小的byte,可能损失精度。
B:b1和b2是两个变量,编译器是不知道变量里面的具体数值的,两个byte类型的变量相加,其结果有可能超出byte范围,所以有可能会损失精度。
byte b4 = 3 + 4;
java有常量优化机制。3和4是两个整数常量,编译器在编译的时候,就已经把3+4的结果7算出来了,然后它再判断7在不在byte 的取值范围内,所以不报错。
字符串和数据类型的运算
任何数据类型用 + 与字符串相连接都会产生新的字符串,这里的 + 是连接符。
打印结果加()是提升()里面的运算顺序。
ASCII码表
'a' = 97
'A' = 65
'0' = 48
11、运算符
①什么是运算符?
就是对常量和变量进行操作的符号
②运算符的分类
算术运算符
赋值运算符
关系运算符
逻辑运算符
位运算符
三元运算符
③算数运算符有那些?
“+,-,*,/,%,++,--”
【注意事项】:
⑴+ 在java中有三种作用,代表正号,做加法运算,字符串的连接符。
⑵整数相除只能得到整数,如果想要得到小数,必须把数据变化为浮点数类型。(只变化一个就可以,另一个会自动提升)
⑶/运算符获取的是除法操作的商,%获取的是除法操作的余数
⑷%运算符
a.当左边的绝对值小于右边的绝对值时,结果是左边
b.当左边的绝对值等于右边或是右边的倍数时,结果为0
c.当左边的绝对值大雨右边的绝对值是,结果是余数
d.%运算符结果的符号只和左边有关系,与右边无关
e.任何一个正整数%2的结果不是0就是1可以用来当作切换条件。
⑸++ -- 运算符(隐含有强制类型转换)
A.单独只用
放在操作数的前面和后面结果一样。(这种用法是我们比较常见的。)
B.参与运算使用
a.放在操作数的前面(左边),先自增或者自减,然后再参与运算。
b.放在操作数的后面(右边),先参与运算,再自增或者自减。
++ int x = 5;
int y = x++;
System.out.println(x+","+y);
第一步,运行x ,值没变化; 第二步 运行 x++, x自增1 x=6;第三步 把第一步的值赋给y, y=5 ;
++ int x = 5;
x = x++;
第一步, 运行x ,x值没变化; 第二步,运行x++ x自增1 x=6; 第三步 把第一步的值赋给x, x= 5
++ int x = 5;
int y = x++;
System.out.println(x+","+y);
可以这样理解
临时存储变量temp
y = x++等同于 先创建一个临时存储变量temp,将x的值赋给temp temp = x = 5; 然后x自增,x=6;然后在拿着临时存储变量temp里的值 赋给y y = temp = 5
④赋值运算符
基本的赋值运算符:= 把右边的值赋给左边(左边必须是变量)
扩展的赋值运算符:+= -= *= /= %= 把左右两边的值进行扩展运算,再赋值给左边(左边必须是变量)
特点: 扩展的赋值运算符本身含有强制类型转换
⑤关系运算符(比较运算符,条件运算符)
==,!=,>,<,>=,<=
【注意事项】:无论操作是简单还是复杂,结果都是boolean类型
==不能写成= 前面是比较运算符 后面是赋值运算符
作者:
JYcainiao
时间:
2015-10-19 21:11
一、 java中的运算符
算术运算符
逻辑运算符
&逻辑与 |逻辑或 ^逻辑异或 !逻辑非
& 两边都为true时,结果为true;只要有一边结果为false,结果就为false【遇false则fasle】
| 只要有一边为true 结果就为true,两边都为false时,结果为false【遇true则true】
^ 两边结果一样时,结果为false,结果不一样时,结果为false【两边相同为fasle,两边不同为true】
! 取反
&&(短路与) ||(短路或)
&& 左边为fasle时,右边不参与运算,左边为true时,计算右边
|| 左边为true时,右边不参与运算,左边为false时,计算右边
& 和 && 区别:【结果一样,& 左右都运算, && 左边为false,右边不执行】
| 和 || 区别:【结果一样,| 左右都运算, || 左边为true,右边不执行】
开发常用的: && || !【&&和||】会稍微节省点时间,所以实际开发中应用会多点
位运算符【对二进制进行操作】
&位与 |位或 ^位异或 ~(按位取反,单目运算符) 二进制情况下进行运算
& 同为1 取1 有0取0
| 有1取1 同为0 取0
^ 相同取0 不同取1
【^特点】 a ^ b ^ b = a 一个数据位异或另一个数据两次,该数据不变
例题:int a = 1,b = 2;要求在不使用第三方变量的前提下,交换a和b的值;
a = a + b; //a = a + b = 3
b = a - b; //b = a + b - b = 1
a = a - b; //a = a + b - b = 2
a = a ^ b; //a = a ^ b;
b = a ^ b; //b = a ^ b ^ b = a
a = a ^ b; //a = a ^ b ^ a = b
~ 内存位取反
例题:int ~7 结果为-8
00000000 00000000 00000000 00000111 整数原码补码反码都一样
11111111 11111111 11111111 11111000 ~7的结果 也是补码 是负数 求出原码
11111111 11111111 11111111 11110111 负数的补码-1是反码
10000000 00000000 00000000 00001000 反码取反结果是原码 -8
<<位左移 结果是乘以(2的左移位次幂)
>>(有符号)位右移 结果是除以(2的右移位的次幂) 高位根据数据去补 高位为0就补0 高位为1就补1
>>>(无符号)位右移 结果是除以(2的右移位的次幂) 高位补0
三元运算符
格式:(关系表达式)?(表达式1):(表达式2); 关系表达式为true 返回表达式1的结果;关系表达式为false 返回表达式2的记过
二、键盘录入
格式:(记住)
1、导包:
格式
import java.util.Scanner;(写在类上面)
位置
在class上面
2、创建键盘录入对象
格式
Scanner sc = new Scanner(System.in); //创建键盘录入函数
3、通过获取录入的数据
格式
int x = sc,nextInt(); //调用输入的值 需要调用几次 就写几次
二、流程控制语句
1、什么是流程控制语句
可以控制程序的执行流程。
2、流程控制语句的分类
A:顺序结构
B:选择结构
if语句
switch语句
C:循环结构
for语句
while语句
do……while语句
2、选择结构的分类
if语句
switch语句
3、if语句有几种格式【注意事项】;a、比较表达式无论简单还是复杂,结果必须是boolean类型
b、if语句{}可以省略,省略后只能控制最近的一条有效语句。注: int x = 12;是两条语句,即 int x; x = 12;
c、一般来说,有左大左括号就没有分号,有分号就没有左大括号。
d、{}最好不要省略
e、例题: boolean s = false;
if(s = true){
Stytem.out.print("s = " + s);
}
打印结果是 s = true 这个s是boolean 条件表达式 执行过程是 先给s赋值为true 然后判断 ,结果为true 执行括号里面的语句
① if(比较表达式) {
语句体;
}
执行流程,先计算表达式的值,看其返回值是true还是false 如果是true 执行语句体;如果是false 不执行语句体
②if(条件表达式) {
执行语句1;
}
else {
执行语句2;
}【if else 执行语句可以是输出语句,但是三元运算符不可以讲解,三元运算符操作后必须要有一个结果
三元运算符可以实现的,if一定可以实现的,反之不成立】
执行流程: 首先计算比较表达式的值,看其返回值是true还是false
如果是true 执行语句体1
如果是false 执行语句体2
③if(条件表达式1){
执行语句1;
}
else if(条件表达式2) {
执行语句2;
}
.
.
.
else {
执行语句n;
}
执行流程:首先计算机比较表达式1看其返回值是true还是false
如果是true 就执行语句1,if语句结束
如果是fasle 接着计算比较表达式2 看其返回值是true还是false
如果是true 就执行语句2,if语句结束
如果是false 接着计算比较表达式3 看其返回值是true还是false
如果都是false 就执行语句体 n+1
【注意事项】 最后一个else可以省略 但是不建议省略 ,可以对范围外的错误进行提示
4、switch语句
格式: switch(表达式){ 【switch后面表达式的值必须是 byte short char int ; jdk5.0 多了个枚举;jak7.0 多了个字符串String】
case 值1: 【这里的case的值必须是常量值】
语句体;
break;【break 是 跳出】
case 值2:
语句体;
break;
case 值3:
语句体;
break;
case 值4:
语句体;
break;
.
.
.
default:
语句体n+1;
break;
}
执行流程 先计算表达式的值,然后和case后面的匹配,如果有就执行相应的语句,否则就执行default控制的语句
【注意】 case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的常量
default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示
特殊情况:
case 就可以把值固定
break最后一个可以省略,其他最好不要省略,因为可能会出现 case穿透现象,建议不省略
default可以在任意位置,建议在最后(如果放到前面,也是最后判断的)
switch语句遇到break就结束了 或者遇到switch的右大括号也可以结束
if语句和switch语句的区别
switch 建议判断固定值的时候用
if建议判定区间或范围的时候用
switch语句能实现的 if一定可以实现
但是if能实现的 switch不一定可以 例如 无穷大
【注意】 if语句的else和switch语句的default里面一般存放的都是错误的 或者 超出范围的情况
作者:
迷途老马
时间:
2015-10-19 22:24
加油,好好学习。天天向上
作者:
小穿钉
时间:
2015-10-20 08:41
总结的真好,有层次,
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2