Java笔记1_java基础

知识点:

1,软件:一系列按照特定组织的计算机数据和指令的集合。分为:系统软件和应用软件

2,人机交互:图形化界面和命令行方式

3,命令行方式:dir  md(创建目录) rd(删除目录,空的)cd   cd..(返回根目录) cd/(返回根目录)  del(删除文件) exit(退出dos命令行)

4,Java发展史:SUN(Stanford University Network)与1995年推出的基于Oak开发的一门高级编程语言。

5,Java技术分支:JavaSE标准版,javaEE企业版,javaME小型版

6,Java语言特点:面向对象,可移植性(跨平台),支持分布式的网络应用,安全性和健壮性

7,Java三种核心机制:java虚拟机(JVM),垃圾回收机制(GC),代码安全性检测

8,环境配置:JAVA_HOME:(保存变量)C:\Program Files\Java\jdk1.7.0_03

  Path:(设置JDK的可执行命令)%JAVA_HOME%\bin;…

  Classpath:(在执行时告诉JVM类的保存路径).;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\jre\lib\rt.jar

  DOS下配置临时环境:Set命令,查看设置环境变量,只在当前命令行中有效

9,Hello World!:代表程序员对世界的美好向往….

10,标识符:26个英文字母大小写,数字0-9,“_”和“$“组成

  要求:1)不可以以数字开头;2)不可以使用关键字(main不是关键字)

  规则:包名:xxxyyyzzz  类名:XxxYyyZzz  变量名:xxxYyyZzz  常量名:XXX_YYY_ZZZ

    Java中严格区分大小写

11,关键字:main不是关键字,但可以被虚拟机识别

12,数据类型:

  1)Java中的数据类型分为:基本类型和引用类型;

  2)基本类型分为数值类型和布尔类型,数值类型分为整数类型和浮点类型;

  3)整数类型分为byte(1),short(2),int(4),long(8),char(2);浮点类型分为float(4)与double(8)类型 (括号中为字节数);

  4)引用类型分为:数组,接口,类;

  5)整数的表现形式:十进制,八进制(用0开头),十六进制(用0x开头);

13,运算符:

  算术运算符:+正,-负,+加,-减,*乘,/除,%取模,++自增(前后),-- 自减(前后),+(字符串相加)

  转义字符:\n 换行,\b相当于backspace  \r 按下回车键 (\r\n:windows下的换行)\t制表符tab

  赋值运算符:=,+=,-=,*=,/=,%=

  比较运算符:==,!=,<,>,<=,>=,instanceof(检查是否是类的对象)

  逻辑运算符:&(与),|(或),!(非)^ (异或) &&(短路与) ||(短路或)

  位运算符:<<左移,>>右移,>>>无符号右移,&与运算,|或运算,^异或运算,~反码

  三元运算符:(条件表达式)?表达式1:表达式2

14,程序流程控制:判断结构:if-else(简单部分建议使用三元运算符)switch语句(byte,short,int,char)

          选择结构,

          循环结构(while(..){..}  do{…}while(…);  for(..;..;..){…})

15,For和while的区别:For和while可以进行互换,如果需要定义循环增量,用for更为合适;注意一点:其中里面的循环条件表达式必须可以判断

16,Break和continue:

  应用范围:break选择结构和循环结构,continue用于循环结构

  注:这两个语句离开应用范围,存在是没有意义的;这个两个语句单独存在下面都不可以有语句,因为执行不到;Continue语句是结束本次循环继续下次循环;标号的出现,可以让这两个语句作用于指定的范围

17,函数:(方法)定义在类中的具有特定功能的一段独立小程序

  格式:修饰符  返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2,…){  执行语句;return 返回值;}

18,重载:(Override)函数名相同,参数列表不同,跟返回值类型无关

19,数组:同一种类型数据的集合,下标从0开始;

  格式:元素类型[] 数组名=new 元素类型[元素个数];

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

20,内存知识:

  栈内存:存放基本类型的变量和对象的引用变量(超过作用域自动释放)

  堆内存:存放由 new 创建的对象和数组,(自动垃圾回收机制收取)

  网上参考讲解:http://dylanxu.iteye.com/blog/1322916  Java中堆内存与栈内存分配浅析

21,数组的两种异常:

  ArrayIndexOutOfBoundsException:访问了数组中不存在的角标

  NullPointerException:空指针异常,引用为null时,还用于操作实体

22,数组遍历:for循环,增强的for循环

23,数组排序:

  选择排序 :先拿第一个跟其他比,若比其他大换位,保证第一个最小,以此类推

  冒泡排序:相邻两个元素进行比较,如果符合条件换位,保证最后一个符合条件

  开发中一般使用Arrays.sort(); 

24,数组的折半查找:提高效率,但是必须要保证该数组是有序的数组(前提);可以应用到插入有序数列中数值

25,二维数组:大箱子里面包含小箱子,使用与一位数组一样

问题:

1,简述对JVM,JRE,JDK的理解?

  jvm:java虚拟机,jre:java运行环境,jdk:java开发工具包

2,简述环境变量path和classpath的作用?

  path:windows程序文件的目录,classpath:java类文件的目录

3,简述classpath环境变量值结尾处是否需要加分号,有什么区别?

  JVM查找文件的顺序:如果没有classpath环境变量,JVM只在当前目录下查找要运行的类文件;如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件。值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次;值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”表示

4,++在前,在后的区别?

  单独使用是没区别的,当遇到有赋值的时候,前加是先计算再赋值,后加是先赋值再计算。a=3;b=a++;  //a=4,b=3;  a=3;b=++a;  //a=4,b=4

5,  short s = 3; s = s+2; s+=2,有什么区别,为什么?

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

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

6,  &和&&的区别?

  位运算时没区别,逻辑运算时,后者会出现短路情况

7,  >>和>>>的区别?

  移位时,>>最高位补什么由数据的最高位值定,>>>无论最高位是什么都用0补

8,  ^作为位运算符的特点?

  相异或同一个数两次得到原数(加密操作)

9,  if语句和switch语句的应用场景。用于判断上switch效率更高(建议),switch只用于byte,short,int,char

10,如何理解,累加思想,计数器思想,大圈套小圈思想。

11,break和continue的特点?

  应用范围:break选择结构和循环结构,continue用于循环结构;这两个语句离开应用范围,存在是没有意义的;这个两个语句单独存在下面都不可以有语句,因为执行不到;Continue语句是结束本次循环继续下次循环;标号的出现,可以让这两个语句作用于指定的范围

12,循环语句的什么时候用?(当一个语句执行多次)while和do while的区别?(do至少执行一次)while和for的区别?(循环增量时用for)

13,用具体的四部(是什么,特点,怎么用,什么时候用)将函数知识点体现出来?

  函数是什么? 函数就是类中一段独立的小程序,对部分代码进行封装,方便于调用。

  函数的特点? a,定义在类中。b,为了将需要的功能进行独立的封装。  c,函数的出现,对代码提高了复用性。     d,只有被调用才会执行。e,函数就是一个功能,功能通常有结果,没有结果的情况用void表示。

  函数怎么用?a,函数代表功能,功能通常有结果,而且需要参与运算的数据。两个明确:明确功能结果,其实就是明确返回值类型,明确功能的未知内容,其实就是在明确参数列表。b,在两个明确基础上,用java的函数的格式进行具体的代码。c,记住,函数体现功能,只定义功能所需的部分内容即可。     d,只要是功能,尽量用函数进行封装。

  函数什么时候用?还要出现功能定义,就通过函数来表现。 将部分重复代码进行封装,提高复用。    可以将代码的书写。比如,将输出语句封装。

14,return语句有什么用?1,结束函数,2,将结果返回给调用者。

15,如何快速思考定义一个函数。1,明确结果,2,明确未知内容

16,定义函数时注意事项?写法上,函数中不能定义函数,只能调用函数。定义上,函数自定义功能中所需的内容,额外的不要定义。

17,函数重载的理解以及好处?在类中定义了两个以上的同名函数,参数不同而已,跟返回值无关。好处:增强阅读性,方便调用

18,函数运行的内存过程?

  1,当函数被调用的时候,函数就压栈了。  在栈内存中分配一个空间来存储该函数中的局部变量。      

  2,执行该函数中的执行语句进行运算。                          

  3,当执行到return时,该函数结束,该函数弹栈,函数内部的变量空间都会被释放。

19,数组的理解,四部?

  1,是什么? 是一个容器,可以存储多个数据。   

  2, 特点?      1,必须存储同一类型的数据。2,必须要明确元素的个数(数组的长度)        

  3,怎么用?  通过中括号的方式来表示数组。核心思想:通过数组的固定的索引(角标)对数组中的元素进行访问(设置,获取)  

  4,什么时候用?       当数据很多而且明确了个数,而且都是同一类型时,这时就要想到使用数组。

20,栈和堆的特点。

  栈: 存储都是局部变量。  一旦局部变量所属的大括号区间结束,该变量释放。

  堆: 存储的都是数组和对象,也称为实体,实体就是可以存储多个数据的空间。 

21,数组操作中常见的问题,什么时候出现,出现的原因?

  1,数组角标越界异常,运行时,访问到了数组中不存在角标。2,空指针异常,运行时,引用型变量没有任何实体指向时,还在操作该实体。

22,数组操作的思想是什么?核心思想:就是角标。通过元素的自动编号就可以访问(设置和获取)数组中的元素。

23,数组的常见的操作有哪些?最值,排序,二分查找(有序数列)

程序:

1,最有效率的方式算出2乘以8等于几?  2<<3

2,对两个整数变量的值进行互换(不需要第三方变量)。n=n^m;m=n^m;n=n^m;

3,int i = 3;   i = i++;   System.out.println("i="+i);//i是?  i=3

4,打印九九乘法表。For循环

		for (int i = 1, j = 1; j <= 9; i++) {
			System.out.print(i + "*" + j + "=" + i * j + "\t");
			if (i == j) {
				j++;
				i = 0;
				System.out.println();
			}
		}

5,编程题: 定义一个功能,完成对考试成绩的等级划分。

switch (num / 10) {
		case 10:
		case 9:
			System.out.println("A");
			break;
		case 8:
			System.out.println("B");
			break;
		case 7:
			System.out.println("C");
			break;
		case 6:
			System.out.println("D");
			break;
		default:
			System.out.println("E");
			break;
		}

6,十进制转十六进制 

/*
	 * 进制转换功能。 base:相与的数值 offset:便移的位数
        trans(60, 15, 4); 60转成十六进制数

	 */
	public static void trans(int num, int base, int offset) {
		if (num == 0) {
			System.out.println("0");
			return;
		}
		// 必须先将十六进制的元素进行存储。
		char[] chs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A',
				'B', 'C', 'D', 'E', 'F' };

		// 定义一个临时容器,用于存储查到的结果。
		char[] arr = new char[32];
		int pos = arr.length;

		while (num != 0) {
			int temp = num & base;
			arr[--pos] = chs[temp];
			num = num >>> offset;
		}
		for (int x = pos; x < arr.length; x++) {
			System.out.print(arr[x]);
		}
		System.out.println();
	}
原文地址:https://www.cnblogs.com/yys369/p/2822434.html