T1java语言基础

一、Linux的由来和发展
  1. Linux是开源的操作系统
  2. Linux是服务器端的操作系统
  3. java主要用于服务器端
 
二、Linux目录结构(与Windows不同)
  1. 文件系统不同:Windows是盘符,Linux是目录。
  2. 外部设备映射不同:Windows是盘符,Linux挂载点。
  3. 安全级别不同:Linux的安全级别更高。
 
三、相对路径和绝对路径
  1. 相对路径:文件或目录相对于当前目录的位置。
  2. 绝对路径:文件或目录相对于根目录的位置。
 
四、java开发环境
  1. Java能够实现跨平台
  2. 不同平台有不同的JVM。JVM是运行在操作系统之上的软件。
  3. java源程序通过编译成字节码文件(.class),由JVM加载字节码文件并运行。
 
五、JDK,JRE,JVM的关系
  1. JVM为java虚拟机。
  2. JRE为java运行环境,提供了运行java程序所需要的环境,包含JVM和java的类库。
  3. JDK为java开发工具包,除了包含JRE之外,还包含开发java程序所需要的编译运行工具。
  4. 运行java最小需要JRE,开发java最小需要JDK。
 
六、Eclipse IDE
  1. IDE为集成开发环境,是专为程序员提供的应用软件。
  2. Eclipse是目前主流的IDE,是IBM公司的开源IDE,下载后直接解压即可运行。
  3. Eclipse是用java语言编写的,所以要先安装JDK才能使用。
 
七、环境变量的意义和配置
  1. JAVA_HOME:该变量的值就是java所在的目录,一些java版的软件和一些java工具(Eclipse/NetBeans/Tomcat)需要用到该变量,设置PATH和CLASSPATH的时候,也可以使用该变量以方便设置。
  2. PATH:作用是指定命令搜索路径,在shell下执行命令时,它会到PATH变量所指定的路径下查找看是否能找到相应的命令程序,我们需要将JDK安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件,如:javac/java/javadoc等等。
  3. CLASSPATH:也制定一个路径列表,是用于搜索java编译或者运行时需要用到的类,在CLASSPATH列表中除了可以包含路径外,还可以包含.jar文件,java查找类时会把这个.jar当成一个目录来查找。通常我们需要把JDK安装路径下的jre/lib/tools.jar(Linux:jre/lib/tool.jar)包含在CLASSPATH中。
  4. 环境变量的配置:计算机->属性->高级系统设置->高级->环境变量->系统变量,或通过cmd命令窗口直接set
JAVA_HOME java的安装路径
PATH %JAVA_HOME%\bin
CLASSPATH %JAVA_HOME%\lib
 
八、变量
  1. 变量指代内存中开辟的空间,用于存储数据。
  2. 使用变量前,必须声明。
  3. 语法:数据类型 变量名。
  4. 一条语句中可以声明多个变量,中间用逗号分隔(注意类型必须相同)。
  5. 变量使用之前必须初始化(第一次赋值),初始化有两种方式:(1)声明同时初始化,(2)先声明再初始化。
  6. 可以对变量进行各种操作,但必须与它的数据类型匹配。
 
九、标识符
  1. 标识符是用于区分名字的符号。
  2. 可以由字母、数字、下划线和“$“等组成,并且不能以数字开头。
  3. java严格区分大小写。
  4. 不能使用关键字。
  5. 最好能见名知意,采用“驼峰命名法”(第一个单词首字母小写,其余单词首字母大写)。
 
十、八种基本类型
  1. 整数类型:byte(1b), short(2b), int(4b), long(8b)
  2. 浮点类型:float(4b), double(8b)
  3. 字符型:char
  4. 布尔型:boolean
 
十一、整数类型
  1. 直接量就是直接写出来的数。
  2. 整数的直接量类型默认是int。
  3. 整数的直接量必须在int的区间之内(-2^31~2^31 -1)。
  4. 整数之间的运算,结果还是整数,两数相除只取整。
  5. 整数运算超出范围会发生溢出,应当尽量避免,正数溢出变成负数,负数溢出变成正数。
  6. 如果int的范围不够,就用long类型,long类型直接量末尾加L。
  7. 整数运算,超过int范围,应将其中一个数加L。
  8. 运算时,以最大类型作为整个运算结果的类型。
 
十二、浮点类型
  1. 一般使用double来保存浮点数。
  2. 小数的直接点为double类型,若想表示float型的直接量,应加f或F。
  3. double无法精确表示0.1(二进制无法表示),所以double运算会出现舍入误差。
 
十三、char类型
  1. 字符型采用Unicode编码,Unicode为世界通用码。
  2. 字符型实质上是整数,也就是字符所对用的码。
  3. 一个char型中,只能装一个字符。
 
十四、boolean类型
  1. boolean只能存储true或false。
  2. 常用于存储关系运算的结果。
 
十五、基本类型间的转换
  1. 两种转换方式:(1)自动类型转换(隐式类型转换),从小类型到大类型可以自动完成,byte->short->int->long->float->double。(2)强制类型转换,从大类型到小类型需要强制类型转换符,语法:(需要转换成的类型) 变量
  2. 强转时,有可能发生溢出或精度丧失,应尽量避免。
  3. byte,short,char可以存储整数直接量,但运算时一律转换成int。
 
十六、算术运算
  1. 加(+),减(-),乘(*),除(/),取余(%),自增(++),自减(--)
  2. “++”为自增运算,表示其本身加1.
  3. “++”在前或在后,当使用时作用不同,直接操作时作用一样。
  4. “++”在前,先自增再使用,“++”在后,先使用再自增。(这里的“使用”指,赋值或输出)。
 
十七、关系运算
  1. 大于(>),小于(<),大于等于(>=),小于等于(<=),等于(==),不等于(!=)
  2. 关系运算的结果为boolean型。
 
十八、逻辑运算
  1. 与(&&),或(||),非(!)
  2. 逻辑运算的结果也是boolean型。
  3. “&&”运算,两边都为真时,为真。
  4. “||”运算,有一边为真时,为真。
  5. “!”运算,非真则假,非假则真。
  6. “&&”和“||”有可能发生短路。当第一个数为false时,“&&”不再等第二个数;当第一个数为true时,“||”不再等第二个数。
 
十九、赋值运算
  1. “=”,“+=”,“-=”,“*=”,“/=”,“%=” (扩展赋值运算)
  2. “=”用作赋值运算,赋值运算本身也有值。
  3. 建议使用扩展赋值表达式:(1)a=a+5; //取出a的值加5后再赋值给a(2)a+=5; //在a值的基础上直接加5
 
二十、字符串拼接运算
  1. “+”有一边为字符串,则做拼接,返回String类型。
 
二十一、条件运算(三目运算)
  1. boolean  表达式?表达式1:表达式2
 
二十二、三种基本分支结构
  1. 顺序、分支、循环
  2. if语句:当if语句块中只有一条语句时,可以省略{},但是不建议省略。
  3. if else 语句
  4. else if 语句:当条件分支大于2时,考虑使用else if结构实现。
  5. switch case语句:(1)switch case语句用于实现多分支。(2)switch后跟的是整数表达式,case后跟的整型的常量。(3)执行逻辑是,从第一个case开始比,相等即为入口。(4)常与break配合,使用break跳出switch语句。(5)建议,当事件超过3条分支,并使用整数表达式时,建议使用switch-case,结构清晰。
 
二十三、循环结构
  1. 循环三要素:(1)循环变量初始化。(2)循环的条件(以循环变量为条件-boolean)。(3)循环变量的改变(向着循环结束改变)。
  2. breakf放在循环中,可以退出循环,常和if语句配合使用。
  3. while语句
  4. do-while语句:先do再判断,为真时再do,再判断,直到条件为false。
  5. 当循环变量的初始化与循环变量的改变一样时,考虑使用do-while。
  6. for语句:(1)for三个表达式都可以省略,但是分号不能没有。不建议省略第二个,因为容易造成死循环。(2)for语句的第一个表达式和第三个表达式,可以使用逗号。(3)break用于循环体中,可以跳出循环。(4)continue只能用于循环体中,作用为跳过循环体中剩余语句而进行下一次循环。可以用if-else代替。
 
二十四、有关循环问题
  1. “当……的时候,干……事”,最好用while解决。
  2. “直到……的时候,干……事”,用do-while。
  3. 固定次数用for。
  4. 当有行有列时,需要使用嵌套循环。嵌套时,外层执行一次内层执行所有次。
  5. break只能跳出一层循环。
  6. 建议循环嵌套层次越少越好,超过三层说明程序设计有问题。
 
二十五、程序=数据结构+算法
  1. 算法:解决问题的步骤(顺序/分支/循环)。
  2. 数据结构:将数据按照特定的结构来存储。
  3. 好的数据结构一定会导致好的算法的产生。
 
二十六、数组
      1.   数组的定义
         方法一:char[] c = new char[5];
         方法二:char[] c;   c=new char[]{‘a’,’b’,’c’};
         方法三:char[] c = {‘a’,’b’,’c’};  //只适用于声明同时初始化(静态赋值)
      2.   数组是引用类型。
      3.   new之后,数组元素是有初始值的:int型(0),double型(0.0),boolean型(false),char型(空字符),引用类型(null)
      4.   访问数组元素通过数组下标(从0~length-1)
      5.   数组的复制
      (1)System.array.copy(原数组,原数组中开始下标,目标数组,目标数组开始下标,复制的长度);
      (2)Array.copyOf(原数组,截取的长度); //截取的长度小于原数组的长度则截取,大于则扩容
      6.   数组的排序
      (1)常用的排序算法:插入排序,冒泡排序,快速排序
      (2)冒泡排序算法:第一次找到所有元素中最大的放在最后一个位置上,不再变动;第二次找到剩余所有元素中最大的放在倒数第二位置上,不再变动;以此类推,直到排序完成。
      (3)数组冒泡排序算法的封装:Arrays.sort(数组);
 
二十七、方法
  1. 用于封装一段特定的逻辑功能,可以在程序中反复被调用,可以减少代码重复,便于程序的维护。
  2. 方法应尽可能地独立。
  3. 方法中定义参数,可以使该方法更灵活。
  4. 方法声明返回值类型,可使该方法返回一个结果,没有返回值用void。
  5. 调用方法时,方法有参则必须传参,且类型匹配。若方法有返回值,调用时最好接收。
  6. return的作用是,返回控制权给调用方,两种写法:(1)return 值; (2)return;
 
原文地址:https://www.cnblogs.com/zhuyj/p/10367860.html