--------------
-----day2-----
--------------
*程序的数据操作往往都在内存中操作的,也就是说数据运算都在内存中完成.
*什么是变量?(*****)
–变量就是内存中的一块用来存放数据的存储单元.
–变量中的值可变
–我们通过变量名就可以找到内存中所开辟的存储单元.
–变量的数据类型有多个.
*如何在内存中开辟一个变量?(*****)
1.要确定变量存放的数据类型
2.确定变量所占内存空间的大小(确定数据类型)
语法:
数据类型 变量名;
比如:int num;
num = 10;
*两个变量中的值做交换,传统做法使用第三个临时变量做过度.
注意点:
在一个方法中不能声明同名的变量,会冲突
补充:
单行注释可以嵌套,多行注释不能嵌套
*标识符的命名规则(*****)
什么是标识符?
–和名字有关的字符串,比如类名,变量名,常量名,接口名等.
类名的命名规则:
1.首字符大写,第二个英文单词的首字符也大写,比如StudentClass 称之为"驼峰命名法"
2.首字母必须是英文字母,下划线, 符 号 开 头 3. 除 了 首 字 母 以 外 的 其 余 字 符 可 以 是 英 文 字 母 , 下 划 线 , 符号开头 3.除了首字母以外的其余字符可以是英文字母,下划线, 符号开头3.除了首字母以外的其余字符可以是英文字母,下划线,符号,还可以是数字
4.类名要通俗易懂,能一个单词就一个单词来描述
5.避开关键字,就是java已经占用的单词
变量名的命名规则
1.首字符小写,第二个英文单词的首字符也大写,比如myScore
2.首字母必须是英文字母,下划线, 符 号 开 头 3. 除 了 首 字 母 以 外 的 其 余 字 符 可 以 是 英 文 字 母 , 下 划 线 , 符号开头 3.除了首字母以外的其余字符可以是英文字母,下划线, 符号开头3.除了首字母以外的其余字符可以是英文字母,下划线,符号,还可以是数字
4.变量名要通俗易懂,能一个单词就一个单词来描述,不要出现 int a = 10
5.避免使用关键字,就是java已经占用的单词,比如:int int; int class;
*计算机底层都是由0和1组成的二进制序列,0或1就代表了1位(bit)
计算机中的单位
1B = 8b (1个字节=8位)
1K = 1024B
1M = 1024K
1G = 1024M
*数据类型的作用有两个(*****)
–确定变量中存放数据的格式
–确定开辟内存空间的大小
*java中的数据类型()
分两大类:
–基本数据类型
分为两类:
–数值型
–整数
byte(1个字节)
short(2个字节)
int(4个字节)() 默认的整数都是int类型
long(8个字节)
–浮点数
float(单精度浮点数,4个字节)
double(双精度浮点数,8个字节)(*****) 默认小数都是double类型
–非数值型
–boolean(布尔类型,1个字节)只能存放true或false
–char(2个字节)–字符型,可以和整型互换,使用单引号括起来,
unicode编码表,兼容了前面的ascii表
--引用数据类型(后续章节讲)
--字符串 (String):使用双引号括起来的字符序列(*****)
--类
--接口
--数组
....
注意:字符串 + 任何数据类型都是字符串拼接,拼接好以后结果是字符串类型
*编码表:
就是把对应国家常用的字符对应的二进制码
常用的编码表:
ascii,iso-8859-1,gb2312,gbk,big5, unicode(全世界常用的字符编码表),utf-8
*常用的2个转义字符(*****)
\n:换行
\t:制表符
*java对数值的表示形式(了解)
1.十进制 0–9 满10进1
2.二进制 0,1组成 ,满2进1()
3.八进制 0–7组成,满8进1
4.十六进制 0–9 A–F 满16进1()
数制之间进行转换
十进制转二进制:除2取余,从后往前输出即可.
二进制转10进制:乘以2的n次方
100001 =12^0 +12^5=32+1=33
十进制转8进制:除8取余,从后往前输出即可.
反之:乘以8的n次方
十进制转十六进制:除16取余,从后往前输出即可.
反之:乘以16的n次方
16进制和二进制之间的互转
二进制转十六:4位变1位
比如:0010 0110 0101 0100== 2654
十六进制转二进制:1位变四位
0X1AFF=0001 1010 1111 1111
8进制和二进制之间的互转
二进制转八进制 :3位变1位
010 011 001 010 100= 023124
八进制转二进制:1位变三位
0357= 011 101 111
*基本的类型转换
–自动类型转换(隐式转换)
*数据类型兼容
*小的数据赋值给大的数据类型
–强制类型转换
*数据类型兼容
*大的数据赋值给小的数据类型,会报错,必须强制类型转换,可能会导致精度的丢失.
注意:
1. 一个表达式出来的结果往往跟大的数据类型走. long和float会跟float走,
数学运算表达式中有double的,结果肯定是double类型
2.假如表达式中有一个是字符串类型的数据,那么结果肯定是字符串类型.
*什么是表达式?
由操作数和操作符组成的就认为是表达式,比如 1 + 1, num1 - num2
运算符
–算数运算符:
+(两个功能,数学运算,字符串连接),-(数学运算,负数),,/(取商), % (取余数),
++:
单独的表达式++ 在前面和后面一样,都是自身加1.
int res = number++;//有其它运算符的时候,++ 在后面,先赋值,后自身加1
//int res = number; number++;
–:
和++操作方式一样.
–赋值运算符: =
复合赋值运算符:
+=,-=,*=,/=,%= 自身做对应的操作.
–关系运算符:–结果是true或false,出来的是boolean类型的数据
==,!=,>,<,>=,<=
–逻辑运算符:–结果是true或false,出来的是boolean类型的数据
(*****)&&:短路与: 多个条件只要有一个条件为false,那么整个表达式就为false,
只有所有的条件为true,那么表达式的结果就为true.
当第一个条件不成立了,后续的条件就不再做判断,直接结果为false
2>3 && 4>3
(*****) ||:短路或: 多个条件只要满足任意一个就为true,只有全部不成立才为false.
当第一个条件成立了,后面就不用再判断了,直接返回为true.
2<3 || 4>3
(*****)!:取反: !true !false
--------------以下主要是对二进制进行操作的----------------------
&: 与
*用在逻辑表达式中,不管第一个表达式1条件是否不成立,后续的表达式都会执行,不会短路
*4 & 5 =4 :两个都是1结果为1,其余结果都是0
|: 或
* *用在逻辑表达式中,不管第一个表达式1条件是否成立,后续的表达式都会执行,不会短路
4 | 5 =5
^: 异或
*当一个数连续异或两个相同数的时候又会得到自身的值.
--位运算符(用来操作二进制数据)
计算机底层使用一个数的补码来进行运算的.
计算机有三个码值:
原码:
反码:
补码:
正数的符号位是0,负数的符号位是1
正数的原码和反码和补码都是一样的
负数的反码= 正数的原码按位取反,符号位不变
负数的补码= 负数的反码 + 1;
补码= 原码取反(符号位不变) + 1
(*****)<<:左移 --左移几位右边就是补多少个0,也就是乘以2的几次方.
5<<3 = 5 * 2^3
00000000000000000000000000101000
>>:右移--右移几位,左边补0,右边去掉几位,也就是除以2的几次方.
(*****)40>>3 =5 = 40 / 2^3
00000000000000000000000000000101
*运算符的优先级
搞不清楚就多添加小括号,小括号中还可以套小括号,小括号优先级最高.
*获取键盘输入的整数,小数和字符串
1)导入Scanner工具:
import java.util.Scanner;
2)创建一个Scanner 对象
Scanner input = new Scanner(System.in);
3)调用Scanner对象中的方法来获取键盘输入的内容
int number = input.nextInt();//获取键盘输入的整数
double number = input.nextDouble();//获取键盘输入的浮点数
String number = input.next();//获取键盘输入的字符串
*程序默认是线性往下执行的,但在现实的环境中我们可能要选择性的来进行执行,所以要
学习java程序中的分支结构
–条件分支结构
1)简单if结构
语法:
if(条件){
//要执行的语句块
}
特点:条件成立执行if里面的语句块,条件不成立跳过if语句块,执行if后面的指令.
2)简单if…else
语法:
if(条件){
//if语句块
}else{
//else语句块
}
注意:当if和else中只有一条的语句的时候,花括号可以省略的,为了不出现问题,一般
都推荐使用花括号.
3)嵌套if
语法:
if(条件1){
if(条件2){
//语句块1
}else{
//else语句块1
}
}else{
if(条件2){
//语句块1
}else{
//else语句块1
}
}
4)多重if
语法:
if(条件1){
//语句1
}else if(条件2){
//语句2
}else if(条件3){
//语句3
}else if(条件4){
//语句4
}else{
//else语句块
}
注意:
1.当一个条件成立了,后面的判断就不会再执行了.
2.if条件假如互换的话可能会影响最终的结果
–循环结构
--------------
-----day3-----
--------------
5)switch…case语句
switch(表达式){
case 值1:
语句;
break;
case 值2:
语句;
break;
case 值3:
语句;
break;
…
[default:
语句;
break;]
}
总结:
1.switch 中的表达式出来的结果是一个常量值(整数(int,short,byte),字符(char), 字符串(jdk1.5版本后才可以使用),枚举 (enum))
2.break的作用是结束switch,可以省略,一旦省略了,从比对成功的位置开始一直往下执行,直到碰到break或swicth结束为止.
3. case后面列出的常量能否重复?不能重复.
4.只要每个case后面都有break,那么case顺序颠倒不影响结果
5.default也可以随意放,随意放的时候要注意是否加break;
6.和多重if进行比较,多重if的功能强大,它既可以做等值判断,也可以做区间判断,而switch只能做等值判断.做等值判断
switch语法更简洁.
补充一点:
比较两个字符串是否相等使用.equals(“字符串”),不能使用==
比如: String str1 = “abc”; String str2 = “abc”;
if(str1.equals(str2)){
}
Eclipse的使用
–它是一个开发平台,不仅仅是用来开发Java的,可以自定义在平台上安装相应的插件,就可以开发相应的应用.
–下载地址:www.eclipse.org
–必须前提配置好环境变量.
Eclipse开发java的步骤
1.创建一个java项目
2.创建一个class类文件
3.编写代码
4.运行字节码文件
Eclipse常用的设置
1.修改代码编辑区的字体大小
2.修改控制台的字体大小
Eclipse 常用的快捷键
1.ctrl+c:复制
2.ctrl+x:剪切
3.ctrl+v:粘贴
4.ctrl+z:撤销
5.ctrl+y:还原
6.ctrl+a:全选
*ctrl+d:删除一行
*ctrl+/:单行注释的添加和去除
*ctrl + shift + / :添加多行注释 取消:ctrl+shift+
*ctrl + shift + f: 格式化程序,必须在非中文的情况下
*ctrl + alt + 向下键 : 复制当前行到下一行
*ctrl + alt + 向上键 : 复制当前行到上一行
*alt + 向下键 或 向上键 :移动当前行前后移动
*ctrl + shift + o: 自动导包
*alt + /:自动猜测意图
sysout alt+/ 自动补全输出语句
main alt+/ 自动生成主方法
*切换工作目录 : file —>switch workspace
*项目的删除有两种方式:
-删除的时候不打勾,只是解除和软件的绑定,磁盘上没有删除
-删除的时候打勾,解除和软件的绑定,并从磁盘上永久删除
*学会导入java项目
import–>General -->Existing Projects into workspace
–循环结构
什么是循环?
—重复做类似的事情.
循环的好处的什么?
–对做重复的事情减少代码量
–做循环我们要明确几个步骤
1.确定什么情况下循环–确定循环条件
2.确定循环干什么事情–确定循环体语句(难点–要找出规律来)
3.确保防止死循环–更新循环体变量
–什么是循环体变量?
控制循环次数的变量就叫循环体变量,也就在循环的过程中必须要修改此变量,目的是让条件最终变为false停止循环
–循环的分类:
*while循环
语法:
while(条件表达式){
//循环体语句
}
执行流程: 当条件表达式为true的时候会执行循环体语句,执行完成以后再回到条件表达式来判断,
条件为true再执行循环体语句,直到条件表达式为false的时候才会结束循环.
特点:先判断后执行,循环体语句可能一次都不执行.
*do...while循环
语法:
do{
//循环体语句
}while(循环条件);--->分号不能忘
执行流程:先执行循环体语句,执行完再判断循环条件,要是为true,又执行循环体语句,直到循环条件为false为止.
特点:先执行再判断,循环体语句至少执行一次.
注意:
1.其实while和do...while 完全可以互相替换.根据实际情况选择
2.while和do...while 推荐在循环次数不确定的情况下使用.
*for循环
语法:
for(表达式1;表达式2;表达式3){
// 循环体语句4
}
表达式1:变量的初始化,只执行一次
表达式2:循环条件
表达式3:更新循环体变量防止死循环
执行流程:
表达式1-->表达式2(true)-->循环体语句4--->表达式3 --->表达式2(true)-->循环体语句4--->表达式3 --->表达式2 (false)-->循环结束
注意:
*表达式1可以省略的.--放到循环上面
*表达式2可以省略的.--代表条件永远为true
*表达式3可以省略的.--放在循环体语句之后
总结:3大表达式全都能省略,就是两个分号不能省略.
特点:和while一样.它是先判断后执行.推荐在循环次数确定的情况下使用for循环,因为语法更简洁.
其实3种循环完全可以互相替换.
int sum = 0;//求和
int number = 1;//变量初始化
while(number <= 100){
sum += number;
number += 3;//更新循环体变量
}
System.out.println("1+4+7+...=" + sum);
for(int sum = 0,number = 0;number <= 100;number += 3){
sum += number;