zoukankan      html  css  js  c++  java
  • 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;
     
  • 相关阅读:
    Android Watchdog
    Android Zygote进程是如何fork一个APP进程的
    java多线程面试题小结
    Java Socket通信以及可能出现的问题解决
    Java对象的浅拷贝和深拷贝&&String类型的赋值
    AtomicLong和LongAdder的区别
    JDK中Concurrent包介绍及使用(包含atomic包/lock包/并发容器/执行器)
    final关键字总结
    Java内存模型-final域的内存语义--没明白,预留以后继续理解
    synchronized底层实现原理&CAS操作&偏向锁、轻量级锁,重量级锁、自旋锁、自适应自旋锁、锁消除、锁粗化
  • 原文地址:https://www.cnblogs.com/zhuyj/p/10367860.html
Copyright © 2011-2022 走看看