“赋值”
a=b即把b的值赋给a,a=6,a=c.右边提供值
复合赋值
5个算术运算符,±/%,可以和赋值运算符“=”结合起来,形成复合赋值运算符*
两个运算符之间没有空格
a=a+6即a+=6;左右出现相同的变量
a=b+6即a=a*(b+6);右边有括号*
i=i+1即i++,++i
a=6的情况下
后:a=i++得到a=6,i=7
前:a=++i得到a=7,i=7
“流程图”
圆角矩形表示开始
方框表示操作
平行四边形表示输入
菱形表示做比较,有两条不同的出路,出路一般跟操纵即方框
最后是一个椭圆形的end
“循环”
switch-case
switch(控制表达式)
{
case 常量:
语句
……
case 常量:
语句
……
default:
语句
……
}
控制表达式只能是整数型的结果
常量可以实常数,也可以是常数计算的表达式
根据表达式的结果,寻找匹配的case,并执行case后面的语句,一直到break为止。
如果所有的case都不匹配,那么就执行default后面的语句;如果没有default,那么就什么也不做。
switch语句可以看作是一种基于计算的跳转,计算控制表达式的值后,程序会跳转到相匹配的case(分支标号)处。分支标号只是说明switch内部位置的路标,在执行完分支中的最后一条语句后,如果后面没有break,就会顺序执行到下面的case里去,知道遇到一个break,或者switch结束为止。
break与continue
只针对当前层
break:跳出循环
continue:跳过循环这一轮剩下的语句,进入下一轮
在循环前可以放一个标号来标识循环:即label:
带标号的break和continue可以对那个循环起作用
for循环
类似于一个计数器,是先验的
for(初始化;条件;单步动作)
{
……
}
第一部分是一个初始化,可以定义一个新的变量:int count=10或者直接赋值:10
第二个部分是循环维持的条件。这个条件是先验的,与while循环一样,进入循环之前,首先要检验条件是否满足,条件满足才执行循环;条件不满足就结束循环
第三个部分是步进,即每轮执行了循环体之后,必须执行的表达式。在这里改变循环变量。
for-each
for(<类型><变量>:<数组>)
对于data这个数组中的每一个元素,循环的每一轮把他拿出来作为一个k;k在过程中是一直变化的。特别适合于遍历一个数组。但是找不到位置,而且无法用于赋值。
for=对于,对于初值,当条件满足时,重复做循环体,然后步进
初值一般只在循环内部用
for == while,他们之间可以转化
从0到n,则循环的次数为n
for中的每一个表达式都是可以省略的,分号不可以即for(;条件;)与while(条件)相同
在圆括号后不要跟分号
if语句为真,执行if后面大括号里面的内容,else总是和最近的if匹配
圆括号后跟分号,表示if结束!!!
永远在if,else后面上加上大括号
while,当满足条件时不断重复循环体的内容。
没有先决条件时用do-while。
循环用哪个?
如果有固定次数,用for
如果必须执行一次,用do-while
其他情况用while
“数组”
数组是一种容器(放东西的东西),特点是:1.其中所有的元素具有相同的数据类型。2.一旦创建,无法改变大小
数组是一种数据结构,能记录同一类型的多个数据,数组中的每个数据叫做元素,所有的元素具有相同的数据类型。编号从0开始,来自于C语言。可以读和写。
<类型>[]<名字>= new <类型>[元素个数];例如int[] numbers = new numbers[100];
元素个数必须是整数,元素个数必须给出,而且是在new的后面给出。元素个数可以是变量。
最小的下标(索引)是0,最大的下标是元素个数-1。编译器不会检查你是否使用了有用的下标。即下标越界numbers[-1] = 10;系统不会报错,运行的时候才会检查是否越界。但是在运行的时候如果出现了无效的下标,可能会导致程序终止。
数组默认初始化全0。
直接初始化数组。int[]scores={87,70,90};直接用大括号给出数组所有元素的初始值,不需要给出数组的大小,用length得到数组大小。
普通变量是数据的拥有者;数组变量是个管理者,即变量里面没有数据,只是管着在另外一个地方放着的数据。管理者(数组)之间的赋值是共同管理同一个数据。new在某个地方,别处,创建了一个东西。
例如int j=i;
j=4;,i和j是两个变量,相互独立。
int []b=a;b和a是同一个变量的管理者,会随着a的变化而变化。
int []a={1,2,3,4,5};int []b={1,2,3,4,5};prinf(“a=b”);输出是false;即他们并不相等。
判断数组是否相等,要用遍历的方法。所有的对应位置即对任意的i都有a[i]=b[i]。
数组变量是数组的管理者而非数组本身;数组必须创建出来然后交给数组变量来管理;数组变量之间的赋值是管理权限的赋予;数组变量之间的比较是判断是否管理同一个数组。
二维数组
int[][] a = new int[3][5];理解为一个三行五列二维数组
a[i][j]表示第i行j列上的单元,a[i,j]并不存在。
初始化:int[][] a={
{1,2,3,4},
{1,2,3},
}
编译器来数数;每行一个{},逗号分隔;最后的逗号可以存在;如果省略表示补0。
“逻辑类型”
关系运算的结果是一个逻辑值,true或者false。这个值可以保存在一个相应的逻辑类型的变量中,这个变量类型是Boolean(布尔)。
逻辑运算是对逻辑量进行的运算,只有逻辑量可以参与运算即!非、&&与、||或
4<x<6–>x>4&&x<6。
优先级:非>与>或
关系运算符优先级比算术运算符低,但是比赋值运算符高。
判断是否连续相等的优先级比其他的低,连续的关系运算时从左向右的。如5>36>4,6>5>4是错的,abtrue,abtrue是错的
“字符”
类型
单个的字符是一种特殊的类型:char;
用单引号表示的字符字面量:’a’,’1’
java使用Unicode来表示字符,可以表达包括汉字在内的多种文字,可以转换成整数\u表示Unicode的编码。
字母和数字在Unicode表中是顺序排列的,大写字母和小写字母是分开排列的。字符可以比较大小。
逃逸字符
用来表示无法印出来的控制字符或特殊字符,它由一个反斜杠”\”开头,后面跟上另一个字符,这连个字符合起来,组成了一个字符。例如\b回退一格,\t到下一个表格位,\n换行,\r回车,\”双引号,\’单引号,\反斜杠本身。
制表位:每行的固定位置,一个\t使得输出从下一个制表位开始,用\t才能使得上下两行对齐。
字符串
用双引号括起来的0个或多个字符就是一个字符串字面量。比如“helllo”,“”,这些字符串没有办法被直接修改。
所有的字符串都是不可变的,对他们的操作的结果都是创造新的字符串出来。
单个字符单引号,多个字符即字符串双引号。
字符串变量String s;
String是一个类(大写),String的变量是对象的管理者而非所有者(就是数组变量是数组的管理者而非数组的拥有者一样)。
new=创建,如String s = new String(“a string”);创建了一个String的对象,用”a string”初始化这个对象,创建管理该对象的变量s。
初始化字符串变量 String s = “hello”;即编译器帮你创建一个String类的对象交给s来管理。
字符串连接
用加号(+)可以连接两个字符串:“hello”+“world”-”helloworld”
当这个+的一边是字符串而另一边不是时,会将另一边表达为字符串然后做连接:1+2+“age”-“3age”,“age”+1+2-“age12”。
比较:””比较是否同一个(管理相同的内容);”.equals”比较内容是否相同。所以应该用.equals来比较String。
字符串操作
字符串.操作表示对.左边的这个字符串做右边的那个操作。
这里的字符串可以是变量也可以是常量。
用length()获取String长度。
不能用for-each循环来遍历字符串。
比较大小
s1.compareTo(s2)。如果s1比s2小,那么结果是负的;如果s1和s2相等,那么结果是0;如果s1比s2大,那么结果是1。compareToIgnoreCase可以不区分大小写地来比较大小。
寻找字符
访问String里的字符,s.charAt(index)即返回在index上的单个字符,下表格式与数组一致。
substring第一个数字从哪个字符开始,第二个数字在哪个字符之前结束。
s.indexOf©得到c字符所在的位置。s.indexOf(c,n)从n号位置开始寻找c字符。
“函数和变量”
函数和方法没有本质区别。函数是一段代码,接收零个或多个参数,做一件事情,并返回零个或一个值。函数定义:函数头,大括号,函数体,函数名,返回类型,参数表。
调用函数,函数名(参数值),()起到了表示函数调用的重要作用,即使没有参数也需要();如果有参数则需要给出正确的数量、顺序和类型,这些值会被按照顺序依次用来初始化函数中的参数。
函数返回,函数结束的时候会返回到正确的地方。从函数中返回值,return停止函数的执行,并送回一个值:return 表达式;
多个出口是不好的。没有返回值的函数void 函数名(参数表)。如果函数有返回值,则必须使用带值的return。
可以传递给函数的值时表达式的结果,这包括:字面量,变量,函数的返回值,计算的结果。
当函数期望的参数类型比调用函数时给的值的类型宽的时候,编译器能悄悄替你把类型转换好,char到int到double;当函数期望的参数类型比调用函数时给的值的类型窄的时候需要强制类型转换(int)5.0;当函数期望的参数类型与调用函数时给的值的类型之间无法转换的时候是不行的
传值
每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系。过去,对于函数参数表中的参数,叫做“形式参数”,调用函数时给的值,叫做“实际参数”。现在我们认为,他们是参数和值的关系。
本地变量:函数的每次运行,就产生了一个独立的变量空间,在这个空间中的变量,是函数这次运行所独有的,称作本地变量。定义在函数内部的变量就是本地变量;参数也是本地变量。
变量的生存期和作用域
本地变量的生存期和作用域是在大括号{}内。
本地变量是定义在块内的,它可以是定义在函数的块内,也可以定义在语句的块内,甚至可以随便用一对大括号来定义变量
程序运行进入这个块之前,其中变量不存在,离开这个块,其中的变量就消失了。
“一些补充”
接口是声明,类是实现。
Null不是关键字,作用是标识一个不确定的对象。
浮点运算有误差,所以1.0!=0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1+0.1。判断浮点数是否相等即两个数差的绝对值是否小于一个很小的数。
断点的意思就是等到调试程序的时候到这个地方停下来,Debug用于调试。
System.out.pritln(10>=5),这是个比较语句,输出的是true或者false,而不是输出10>=5。
true和false不能比较大小。
只能被1和他本身整除的数就是素数,不包括1。
java语言在调用函数时,永远只能传值给函数
类型转换double转int,不会自动转换,需要强制转换即(int)(double)
在计算机内,int是4个字节,32个比特,取值范围是正负2的31次方减1。
Scanner接收输出的对象。接收输入Scanner in = new Scanner(System.in);
.next读入一个值,以空格为区分;.nextLine读入一行。
对象变量的赋值等于共同管理
可扩展性,一段代码在数据修改的时候,代码本身不需要做出修改,依然能够运行。
字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。
“首要考虑的是”
每个程序。要思考的时变量和算法,有几个变量,算法步骤是什么
写程序的时候的条件是程序得以继续的条件,而不是离开的条件
java基础(网课笔记)
最新推荐文章于 2024-01-15 12:08:37 发布