자바 기본적인 프로그래밍 구조 요약


언어를 학습 : (1) 마스터의 증상 (2)이 언어의 사용은 무엇인지.

1.1 키워드

1. 키워드는 특별한 의미를 부여됩니다.

2. 키워드 특징 : 키워드는 모두 소문자 문자입니다.

클래스 이름에서 각 단어의 3. 시작은 대문자로해야합니다.

1.2 식별자

1. 식별자 :

  • 프로그램 정의의 일부 이름
  • 0-9 기호 : _ $ 조성물 (26 개) 영어 문자, 숫자에 의해 케이스
  • 식별자에 대한 법적 규칙을 정의합니다 :

              (1) 숫자로 시작할 수 없습니다

              (2) 키워드를 사용할 수 없습니다

  • 자바는 대소 문자를 구분합니다
  • 주 : 순서대로 이름은 가독성을 향상시킬 때, 의미를 만들려고합니다.

1.3주의 사항

1. 주석은 주석 인터프리터에 대한 설명 텍스트입니다. 당신은 코드의 가독성을 향상시킬 수 있습니다.

2.// 및 / * ~ * / 주석 두 언어는 일반적인 자바 특정 코멘트입니다 :

       / * ~ * / (문서 주석)이 주석은 자바 Javadoc 툴을 통해 추출 할 수있는 것은 웹 파일에 구현 된 프로그램의 문서를 생성합니다.

3. 한 줄 주석은 중첩 된 여러 줄 주석, 한 줄 여러 줄도 중첩 될 수 있습니다 될 수 있습니다. 여러 줄 주석은 여러 줄 주석을 중첩 될 수 없습니다.

4. 댓글은 프로그램을 디버깅 할 수 있습니다.

주석은에 바이트 코드로 컴파일되지 않습니다.

6. 당신이 쓰는 코드 서면 의견은 표준 코딩된다.

바이트 코드의 클래스 파일의 형식이 결국 반영에 7.java 절차, 수업의 형태에 있습니다.

제 1 항에있어서, 상기 코드의 형태는 단순하게 생각을 반영한다.

1.4 상수와 변수

1 일정 데이터는 변경 될 수 없다.

분류 육가지 2.java 상수 :

  • 정수 상수
  • 진수 상수
  • 부울 상수 (부울). 더 독특한, 두 값 : 허위 사실.
  • 문자 상수. 문자 숫자 기호 또는 작은 따옴표
  • 문자열 상수. 따옴표. ( "" 문자열이나하지 빈 문자열 )
  • null의 정수입니다. 하나의 값은 다음과 같습니다 널 (null)

정수 3. 네 가지 형태가있다 :

  • 팔 진법
  • 소수
  • 진수

4.byte (바이트)는 각각의 비트는 비트 위치라고 여덟 비트 =. 대표 값이 제한된다.

컴퓨터의 내용은 이진 표현된다.

6.1k=1024字节;

7.八进制数:其实就是二进制位 3 个二进制位为一个八进制位。

  十六进制:其实就是二进制中的 4 个二进制位为一个十六进制位

8.负数的二进制表现形式:对应的整数二进制取反,加1。凡是负数,它的二进制最高位是1。

9.一个整数在内存中通常是用4个字节表示的,32位。

10.变量的概念:

  • 内存中的存储区域
  • 该区域有自己的名称(变量名)和类型(数据类型)
  • 该区域的数据可以同一类型范围内不断变化

11.为什么定义变量:用来不断存放同一类型的常量,并可以重复使用。记录不确定的数据。

12.变量使用注意:

  • 变量的作用范围(一对{}之间有效)
  • 初始化值

13.定义变量的格式:

  • 数据类型 变量名=初始化值;
  • 注:格式是固定的,记住格式以不变应万变。

14.java是强类型的,要求变量只能存放同类型的常量。

15.java中的数据类型分为:

(1)基本数据类型:

  • 数值型中的整数类型(byte(1字节), short(2字节), int(4个字节), long(8个字节))
  • 数值型的浮点类型(float(单精度,4字节), double (双精度,8字节))
  • 字符型(char(2字节))
  • 布尔型(boolean)

(2)引用数据类型

  • 类(class)
  • 接口(interface)
  • 数组(【】)

16.在定义时,整数默认为int类型,小数默认double类型。

17.一个中文占2字节。

18.在整数值过大的情况下,在数值后面标识一个l,表示长整型的数。

19.由于小数默认为double型,如果你想将其定义为float类型,需要在数的后面加f。

20.自动类型转换(也叫隐式类型转换);强制类型转换(也叫显式类型转换)

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

  • 所有的byte型、short型和char的值将被提升到int型
  • 如果一个操作数是float型,计算结果就是float型
  • 如果一个操作数是long型,、计算结果就是long型
  • 如果一个操作数是double型,计算结果都是double型

22.两端必须是数值型时,就可以进行自动类型提升,然后进行运算。以占用内存比较大的为主。

23.中国的编码表GBK。

24.在ASCII码表中,大写字母比小写字母小32.

25.在java中有一张国际标准码表(unicode),包括世界上各个国家的码表。

26. int a=Integer.MAX_VALUE可以得到int的最大值

27.成员变量在使用时不必被初始化,局部变量在使用时必须被初始化

1.5 运算符

1.算术运算符包含:+、-、/、*、%(取余数,模运算)、+(连接符)、++(自增)、--(自减 )。

2.在进行负数取余运算时,负号只参考被模数。

3.任何数据和字符串用+相加,都叫做相连接。

4.a++会先把a值记录下来,参与其他运算,然后自增。

5.赋值运算符:=、+=、-=、*=、/=、%=;在运算时,遇见不同的类型时,会自动转换,只进行一次运算

6.比较运算符:==、!=、<、>、>=、<=。

7.逻辑运算符:&(AND 与)、|(OR 或)、^(XOR 异或)、!(Not(非))、&&(AND 短路)、||(OR(短路))。

8.逻辑运算符是用于连接两个boolean类型的表达式。

9.^(异或)运算规律:^符号两边如果相同,结果是false;两边的结果不同,结果是true。

10.!(非):非运算,判断的事物的另一面。

11.&&:左边一旦为假,右边不运算。&是不管左边如何,右边运算。两者运算结果一样。

1.5.5位运算符

1.位运算符主要用于二进制位运算的符号。

2.位运算符:<<(左移)、>>(右移)、>>>(无符号右移)、&(与运算)、|(或运算)、^(异或运算)、~(反码)。

3.<<:在二进制数上,向左移动,相当于乘以2的倍数,空缺位补0 。

>>:在二进制数上,向右移动,相当于除以2的倍数。而且,最高位是啥,就用啥补位。

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

移n位,就是对乘以或除以2的n次幂。

4.^(异或运算):一个数异或同一个数两次,结果还是这个数。

5.计算机中存储负数是用补码存储的。

6.位运算非常高效。

1.5.6三元运算符

1.格式:(条件表达式)?表达式1:表达式;

  • 如果条件为true,运算后的结果是表达式1
  • 如果条件为false,运算后的结果是表达式2.
  • 表达式就是具有一定语法规则的语句

1.6程序流程控制

1.结构有:(1)顺序结构(2)判断结构(3)选择结构(4)循环结构

2.判断结构:代表性语句 if语句(三种格式)。

3.三元运算符就是if else语句的简写格式。

4.简化形式弊端:它就是一个运算符,必须有运算结果。

5.简写格式什么时候用:当if else运算后,有一个具体地结果时,可以简化成三元运算符。

6.区域代码块:为了节省内存空间,可将无用的变量释放。它可以定义局部变量的生命周期。

7.选择结构:switch语句

格式:

switch(表达式)

{
	case 取值1:执行语句;break;
	case 取值2:执行语句;break; ········· 
        default:执行语句;break;
}

8. switch选择的数据是有限的,有四种:byte、short、int、char。

9.switch语句执行到大括号处会结束,如果没有break,会继续向下执行,不在判断,直到碰到break,或者大括号终结。

10.if的应用:

  • 对具体的值进行判断
  • 对区间判断
  • 对运算结果是boolean类型的表达式进行判断

11.switch的应用:

  • 对具体的值进行判断
  • 值的个数通常是固定的

对于具体的值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高一点。

2.6.1循环语句

1.循环结构:代表语句:while,do while,for。

2.do while特点:是条件无论是否满足,循环体至少执行一次。

3.Ctrl+C 结束控制台的运行

4.for循环格式:

  1 for(初始化表达式;循环条件表达式;循环后的操作表达式)
  2 {
  3 	执行语句;(循环体)
  4 }
  5 
5.while与for可以互换,区别在于for为了循环而定义的变量在for循环结束后就在内存中释放,而while循环使用的变量结束后还可以继续使用

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

7.for和while的特点:

  1. for和while可以互换
  2. 格式上的不同,在使用上有点小区别,如果需要通过变量对循环进行控制,该变量只作为循环增量存在时,区别就体现出来了。

8.当对某些代码执行很多次时,使用循环结构 完成。

当对一个条件进行一次判断时,可以使用if语句。

当对一个条件进行多次判断时,可以使用while语句。

9.注意:

(1)在使用循环时,一定要明确哪些语句需要参与循环,哪些不需要。

(2)循环通常情况下,需要定义条件,需要控制次数

10.转义字符:能转变某些字母和符号含义的字符。(\n:回车符;\t:制表符 ;\b:退格;\r:按下回车键)

11.Windows系统中回车符其实是由两个字符组成的 \r \n;

linux中回车符是 \n。

12.字符串中出现了单纯的反斜线,并没有将后面的转义,则反斜线要被转义为普通的符号。

2.6.2增强for循环:

1.遍历数组

  1 语法为: for (Type value : array)
  2 
  3 {
  4 	 expression value;
  5 }
  6 

2.显而易见,for/in(for each) 循环自动控制一次遍历数组中的每一个元素,然后将它赋值给一个临时变量(如上述代码中的int n),然后在循环体中可直接对此临时变量进行操作。这种循环的缺点是:

  • 只能顺次遍历所有元素,无法实现较为复杂的循环,如在某些条件下需要后退到之前遍历过的某个元素;
  • 循环变量(i)不可见,如果想知道当前遍历到数组的第几个元素

1.6.3 其他流程控制语句

1.break(跳出),continue(继续)

2.break语句:应用于选择结构和循环结构。

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

3. 当break语句单独存在时,下面不要定义其他语句,因为执行不到。

4.break跳出当前循环,如果出现了循环嵌套,break想要跳出指定的循环,可以通过标号完成。(给循环起名字)

5.continue作用:结束本次循环,继续下次循环。

1.7 函数

1.函数:就是定义在类中的具有特定功能的一段独立小程序。(函数也称为方法)

2. 函数的格式:

  1 修饰符(public static) 返回值类型 函数名(参数类型 形式参数1 ,参数类型 形式参数2,··)
  2 
  3 {
  4 	执行语句;
  5 
  6 	return返回值;
  7 }
  8 
返回值类型:函数运行后的结果的数据类型。

参数类型:是形式参数的数据类型。

形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数。

实际参数:传递给形式参数的具体数值。

return:用于结束函数。

返回值:该函数运算后的结果,该结果会返回给调用者。

函数名:如果使用2个以上的单词,第一个单词首字母小写,第二个大写首字母(规范)

3.java语言是强类型语言,其将所有的数据都划分类型。

4. 特殊情况:功能没有具体的返回值。这时return的后面直接用分号结束

如何体现返回值类型:没有具体值,返回值类型用void表示。

注意:如果返回值类型是void,那么函数中return语句可以省略不写。

1.7.2 函数的特点

1.定义函数可以将功能代码进行封装。

2.便于对该功能进行复用。

3.函数只有被调用才会被执行。

4.函数可以提高代码的复用性。

5.注意:

  • 函数中只能调用函数,不可以在函数内部定义函数。
  • 定义函数时,函数的结果应该返回给调用者,交由调用者处理

6. 函数的定义有2个明确完成:

  1. 这个功能的结果是什么?
  2. 这个功能实现过程中是否需要未知内容参与运算?

7.函数的参数列表(参数的个数、参数的类型)

8.返回值类型和参数类型没有直接关系。

1.7.3 函数的重载

1.重载:在同一个类中,允许存在一个以上的同名函数,只要它们的参数个数不同或参数类型不同即可。

2.函数的重载和返回值无关。

3.java是严谨性语言,如果函数出现的调用的不确定性,会编译失败。

1.8 数组

1.数组:同一种类型数据的集合,起始数组就是一个容器。

2.数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素。

3.格式1:

元素类型[ ] 数组名 = new 元素类型[ 元素个数或数组个数];

格式2:

元素类型[ ] 数组名 = new 元素类型[ ] {元素,元素,····};

等同于( 元素类型[ ] 数组名 = {元素,元素,····})

4. 内存的划分:

  1. 寄存器
  2. 本地方法区
  3. 方法区
  4. 栈内存
  5. 堆内存

5.栈内存:存储的都是局部变量,而且变量所属的作用域一旦结束,该变量就自动释放。

6.堆内存:存储的是数组和对象(其实数组就是对象)凡是new建立在堆中。

7.堆内存的特点:

  • 存储的是实体,每一个实体都有首地址值
  • 堆内存中的每一个变量都有默认初始值,根据类型不同而不同。整数是0,小数0.0f,boolean false,char '\u0000'。
  • 垃圾回收机制

8.new会在堆中重新分配空间。

9.常见问题:

  • 当访问到数组中不存在的角标时,就会发生数组角标越界异常。
  • 当引用型变量没有任何实体指向时,还在用其操作实体,就会引发空指针异常。

10. 对数组操作最基本的动作就是存和取。(就是对角标的操作)

11.length是数组自带的一个属性。

12. 排序有选择排序和冒泡排序。

13.冒泡排序内循环:

          -1:为了避免角标越界

          -x:为了让外循环增加一次,内循环参数与比较的元素个数递减。

14.Arrays.sort(arr) 这是java中设定好的排序功能。

15.数组常见功能查找 :返回-1,代表角标不存在。 如果出现两个,只会出现第一个。

16. 折半查找(二分查找):被查找的数据必须是有序的。

17.Arrays.binarySearch(arr,元素)是java中自带的折半查找功能。该功能中,如果存在返回的具体的角标位置,不存在返回的是,-插入点-1.

18.什么时候使用数组:如果数据出现了对应关系,而且对应关系的乙方是有序的数字编号。并作为角标使用。这是就必须使用数组。

19.查表法:可以将数据存储到数组中,根据运算的结果作为角标直接去查对应的元素即可。

20.查表会查到比较多的数据,数据一多,就先存储起来,在进行操作。所以定义一个数组,作为临时容器。

1.8.5 数组中的数组

1. 格式1:int [ ][ ] arr = new int[3][2]

  • 定义了名称为arr的二维数组
  • 二维数组中有3个一维数组
  • 每一个一维数组中有2个元素
  • 一维数组的名称分别为arr[0],arr[1],arr[2]
  • 给第一个一维数组1角标位赋值为7写法是:arr[0][1]=7;

格式2:int [ ][ ] arr = new int[3][ ]

  • 二维数组中有3个一维数组
  • 每一个一维数组都是默认初始化值为null
  • 可以分别对这个三个一维数组进行初始化

2.[I@1fb8ee3 @左边是实体的类型。 @右边是实体的哈希值。

3.打印二维数组的长度,其实就是一维数组的个数。

4.二维数组使用场景:数据多的时候用数组存起来,数组多的时候用二维数组存起来。

추천

출처www.cnblogs.com/mysmeng/p/java001.html