努力 坚持 自信 成功!java全面基础笔记2


-----------  android培训 java培训 、java学习型技术博客、期待与您交流! ------------
7. API( Applaction Program Interface)
  
   6.1 Object
      
       所有类的终极父类,该类中定义的方法,其他类中都有。该类可以直接创建对象。
       常见方法:
       String toString()  返回一个描述对象的字符串信息
       boolean equals()   比较两个对象的内存地址是否相等,默认使用==实现
       int hashCode()     如果两个对象equals()返回true,那么该方法的返回值也要一致
       Class getClass()   返回当前对象的Class对象      

       注意:
       在开发者自定义类的时候,必须要记得重写这三个函数。
   6.2 String
      
       1. 创建对象
          String str = "abc";             对象在常量池中
          String str = new String("abc")  对象在堆中
          ==     比较的是字符串对象的内存地址是否相等
   equals 比较是的两个对象的内容是否相等
       2. 判断
          equals()
   contains()
   isEmpty()
   endsWith()
   startWith()
       3. 查看
          charAt()
   indexOf()
   lastIndexOf()
       4. 截取和替换
   trim()
   substring( start,end )  不包含end索引
          split()
   replace()
   replaceAll()
   matches()
       5. 转换
          toUpperCase()
   toLowerCase()
          toCharArray()
          getBytes("")                // 编码
   new String( byte[] bs,"" )  // 解码
   6.3 字符串缓冲区对象
          因为String不可变(数组不可变),所以提出了字符缓冲区对象。
   -----| StringBuffer         线程安全的
       append()
       toString()
       String substring(int start)
              insert(int offset, float f)
       delete(int start, int end)
   -----| StringBuilder        推荐使用
   6.4 System
      
       属性:
          
   InputStream  in
   PintStream   out
       方法:
          getProperties()      获取系统素有属性    os.name=Window XP  file.encoding=GBK
   currentTimeMillis()  获取当前系统的时间值
   exit(int status)     0为正常退出
   getenv(String name)  获取系统环境变量
   console()            获取控制台对象
 
   setIn(InputStream in)重定向标准输入流
          setOut(OutStream out)重定向标准输出流
   6.5 Runtime
         
       描述的是运行环境对象。
       static Runtime getRuntime() 通过该方法获取该类的对象
       exit()
       gc()
       Process exec()          执行一个命令行命令程序,可以指定参数
 
   6.6 Date(java.util.*)
      
       描述的是系统的当前的日期,包含年、月、日、时、分和秒
       getYear()
       .......    都过期了
       Calendar.set(year + 1900, month, date)
       格式化日期类:(java.text.*)
       SimpleDateFormat
       "yyyy-MM-dd a E hh:mm:ss"
       String str = format( Date date );
   6.7 Calendar
       static Calendar getInstance() 只能通过该静态方法获取
      
       Calendar.get( Calendar.YEAR ) 获取年份
   6.8 Math
      
       ceil()     向上取整
       floor()    向下取整
       round()    四舍五入
       random()   0~1
   6.9 Random
       nextInt(10)
       nextLong(10)
       nextDouble(23.7)
8. 集合(Collection)
  
   7.1 集合的概念
       1. 主要用于存储对象
       2. 数组 VS 集合
          2.1 数组是不可变
          2.2 数组操作比较麻烦

   7.2 集合体系结构

   -----| Iterable  接口
       Iterator iterator()
   -------| Collection  接口
       add()  remove()   clear()
   ---------| List  有序,可重复
       get()  remove()   set()  listIterator()
   ------------| ArrayList 数组实现,默认10,增长0.5  操作慢,查询快
   ------------| Vector    线程安全的ArrayList
   ------------| LinkedList链表实现,操作快,查询慢, 数据结构: 栈、队列
   ---------| Set   无序,不可重复
   ------------| HashSet   哈希表,底层使用HashMap, hashCode()且eauqls()则两个对象重复
   ------------| TreeSet   红黑树,底层采用TreeMap, 如果比较的结果为0说明对象重复
                           Comparable  conpareTo( Object o )
      Comparator  compare( Object o1, Object o2 )  new TreeSet( 比较器对象 );
   -----| Iterator  接口
       hasNext()  next()  remove()
   -------| ListIterator  接口
       add()  hasPrevious()  previou()  set()
   -----| Comparable 接口  实现自然排序
       compareTo( Obejct o )     String Integer
   -----| Comparator
        compare( Object o1, Object o2 ) 
 equals()
   -----| Map  主要存储关联对象  Key --- Value
   --------| HashMap  哈希表,对Key对象进行hash存储,Key对象的hashCode()且eauqls()则两个对象重复
   --------| TreeMap  红黑树,如果Key比较的结果为0说明对象重复
                      如果比较出来Key对象重复了,那么会使用新值对象进行替换原来的旧值对象
   --------| Properties 代表一个配置文件对象,可以将配置文件映射为内存的中Map对象
             load()   将某一个配置文件装载为Map对象
      get(key) 获取某一个key关联的值对象
      getProperty()
      setProperty( key , value )  内存
      store( Writer )
   7.3 集合的遍历
  
       1. 直接打印集合对象
          System.out.println(list);
       2. for循环(只能遍历List)
          for( int i = 0; i < list.size() ; i++ ){
  
     list.get(i)
  
   }

       3. 增强for循环
          for( T t  : list ){
   
       System.out.println(t);
  
   }
       4. 迭代器
          4.1 while
   Iterator it = list.iterator();
   while( it.hasNext() ){
  
     it.next()
  
   }
   4.2 for
   for( Iterator it = list.iterator(); it.hasNExt() ; ){
  
       it.next()
   }
          Iterator it = list.iterator();
   for( ; it.hasNExt() ; ){
  
       it.next()
   }
       5. Map的遍历
          5.1 直接打印Map对象
          5.2 获取key的set
       Set keys = map.keySet();
      for( Iterator it = keys.iterator(); it.hasNExt() ; ){
  
       it.next()
      }
          5.3 获取value对象
      Collecion vs = map.values();
      for( Iterator it = vs.iterator(); it.hasNExt() ; ){
  
       it.next()
      }
          5.4 EntrySet
      Set<Map.Entry>  set = map.entrySet();
      for( Iterator it = set.iterator(); it.hasNExt() ; ){
         Map.Entry entry = it.next();
  T key = entry.getKey();
  T value = entry.getValue();
      }
        6. 使用泛型的迭代器进行遍历
    ArrayList<String> list = new  ArrayList<String>();
    Iterator<String> it =  list.iterator();
    for( ; it.hasNext(); ){
   
  String v = it.next();
    }
    for( String temp  :  list ){
   
   
    }
  
   7.4 泛型(Generic)
       泛型的概念: 泛型即类型的参数化。
       1. 泛型的应用
         
   集合中使用泛型可以提高数据的安全性。
   ArrayList<String> list = new ArrayList<String> ();  推荐使用
   ArrayList list = new ArrayList<String> ();
   ArrayList<String> list = new ArrayList ();
   注意:
   
       泛型不能自动类型转换
       2. 泛型的自定义
          2.1 非静态方法
       public <T> void  print( T t ){
      
       }
          2.2 类泛型
       如果一个类中属性和方法几乎都用到泛型了,那么可以将泛型的自定义声明到类上。
       class Person<T>{
          public void eat( T t){
  
   }
      
       }
       注意:
      
          1. 如果创建给类的时候没有指定具体的数据类型,默认是Object
   2. 具体的类型只能是对象类型,不能是基本数据类型
          2.3 静态方法的泛型声明
       静态方法不能使用类上的泛型声明,所以要自己单独的声明
      
       public static <T> void  print( T t ){
      
       }

       3. 泛型的继承
          3.1 class A<T> extends B<T>
   3.2 class A extends B<String>
   注意:
  
       1. 接口可以有泛型
       interface A<T>{}
       4. 泛型的约束
          Collection<?>                 任意的对象类型
   Collection<? extends Number>  必须是Number的子类或自身
   Collection<? super Integer>   必须是Integer的父类或自身

          注意:
      一个类是自己本身的子类或父类。
   7.5 工具类
      
       1. 数组的工具类(Arrays)
          sort()  自然排序
   binarySearch()  前提是先排序
   toString()  遍历数组  [,]
   asList()

       2. 集合的工具类(Collections)
          sort()  自然排序
   binarySearch()  前提是先排序
   reverse()
   max()
   synchronizedCollection(Collection<T> c) 将线程不安全的集合对象转换为线程安全的
 
   所有的集合类都有一个方法
   toArray() 转换为数组

       注意:
      
          1. 根据源代码学习二分查找的实现原理
   2. 在项目的实际开发中要学会定义工具类
     
      所有的属性和方法都是静态的。该类一定是一个final的。
   
9. IO流
  
   9.1 IO的概念
       主要做设备和设备之间的数据传输。
   9.2 IO的分类
       单位:
       字节流  (主要操作二进制数据)
       字符流  (主要操作字符文本数据)
       方向:
       输入流
       输出流
       以代码为基准:输入流、输出流
   9.3 IO的体系结构
       字符流(使用了缓冲区)
       -----| Writer  抽象类   每次操作一个字符
          write(int)  write( char[] )  flush()  close() 
       --------| FileWriter
       --------| OutputStreamWriter
       --------| BufferedWriter
          newLine()
       -----| Reader  抽象类   每次操作一个字符
          read()  read(char[])  close()
       --------| FileReader
       --------| InputStreamReader
       --------| BufferedReader
          readLine()
       ----------| LineNumberReader
          getLineNumber()
   setLineNumber()
   mark(34242)
   reset()
   skip()
       注意:
         
   文本文件的拷贝练习。
       字节流不是用缓冲区
       -----| OutputStream 抽象类  每次操作一个字节
          write(byte)  write(byte[]) close()
       --------| FileOutputStream
       --------| ObjectOutputStream
       --------| BufferOutputStream  (有缓冲区了)
       --------| PipedOutputStream
       -----| InputStream  抽象类  每次操作一个字节
       --------| FileInputStream
       --------| BufferedInputStream
       --------| ObjectInputStream
       --------| SequenceInputStream
       --------| PipedInputStream
       注意:
          拷贝一个图片文件。
   9.4 字符流
           1. 操作单位为字符
    2. 使用了内存中的缓冲区,所以需要刷新
    3. 操作文本数据,不能操作二进制数据
    4. 内部做了码表的转换,所以要注意乱码
      
       编码和解码的码表必须一致。
       getBytes()
       new String()
         
   9.5 字节流
           1. 操作单位是字节
    2. 没有使用缓冲区,不需要刷新
    3. 主要操作二进制数据,无需编码
   9.6 转换流
  
           字节流到字符流的桥梁。
          
           InputStreamReader   将字节输入流转换为字符输入流
    OutputStreamWriter  将字节输出流转换为字符输出流
    new BufferedReader( new InputStreamReader( (System.in) ) );
   9.7 标准输入和输出流
          InputStream System.in
   PrintStream System.out
   接受控制台输入的数据:
          BufferedReader read =  new BufferedReader( new InputStreamReader( (System.in) ) );
   ---》23
   String age = read.readLine();
   Person age int
   int age = Integer.parseInt(age);

   ---》34.8
          String price = read.readLine();
         
   double price = Double.parseDouble(price);
        
  注意:
      学会使用标准流重定向实现日志文件。

   9.8 顺序流
             SequenceInputStream
             new SequenceInputStream( InputStream in1 , InputStream in2 )
      new SequenceInputStream( Enumeration< ? extends  InputStream > )

      new Enumeration(){
     
         public boolean hasMoreElements(){
  
     return it.hasNext()
  
  }
  public Object nextElement(){
  
     return it.next()
  
  }
      }
             注意:
      文件的切割和合并。

   9.9 File类
       该类描述的是一个文件或文件夹。
       0. 属性
          separator     \     /
          pathSeparator ;
 
       1. 构造函数:
          new File(String name)
   new File( File dir , String name)
       2. 常见的方法
      
          boolean createNewFile()  
   delete()
   deleteOnExit()
   createTempFile(String prefix, String suffix)   .tmp  存储在系统的默认的临时文件夹中
   exists() 目录或是否存在
          isFile()
   isDirectory()
         
   String[] list()        返回一个文件夹下面的所有的目录和文件
   File[]  listFiles()    返回一个文件夹下面的所有的目录和文件对象
          File [] listFiles(FileFilter filter)
   -----| FileFilter  接口
   public boolean accept(File pathname){
  
        return pathname.getName().endsWith(".java");
   }
 
          mkdir()                创建一级目录
   mkdirs()               常见多级目录
   renameTo()             重命名   如果指定的路径不相同实现的是剪切
   注意:
       1. 实现遍历一个多级目录的文件夹
       2. 删除一个目录
       3. 拷贝一个带目录的文件夹

         3. 递归
     3.1 递归的概念
         函数自身调用自身。
     3.2 递归的实现
         1. 函数中自己调用自己
  2. 退出条件
     3.3 递归的练习
         1. 递归目录的删除
  2. 递归目录的拷贝
            public void print( int x ){
    
        if( x > 3 ){
         
   print(--x);
        }
        Systenm.out.println(x);
     }
           print( 5 );
        4. 带File的流操作
 
    new FileWriter( new File("a.txt") , true );
   9.10 序列化和反序列化流
             
             序列化:  对象  ------》 目标设备
           反序列换:  目标设备----》对象

    ObjectInputStream
    ObjectOutputStream
    注意:
        1. 序列化的类对象一定要实现Serializable接口
        2. 为了避免整容后不认识该对象,在序列化的类定义的时候需要定义一个
           public static final long serialVersionUID = 1L;
               3. 如果A实现了Serializable接口,B继承了A,那B可以被序列化。

   9.11 管道流
        主要做的是线程之间的数据通信
 PipedInputStream
 PipedOutputStream
 注意:
 
    需要相互连接
   9.12 打印流
        打印方便开发者格式化输出日志信息或其他数据信息。
        PrintStream
 PrintWriter
 
 println()
 print()
 printf()
       
 %s  字符串
 %d  正数
 %f  小数
 %c  字符

   9.13 其他流
        RandomAccessFile
 new RandomAccessFile( 文件设备 , "rw" );
 writeUTF();
 readUTF();
 seek();
 DataInputStream
 DataOutputStream
 ......
10. IDE
   10.1 IDE概念
   10.2 常见IDE
   10.3 eclipse的使用
       
 1. 管理模式
    1.1 创建工作区
    1.2 创建java项目
    1.3 在项目的src目录下创建java源文件  
 2. 快捷键
    Ctrl+1
    Alt+/
    Ctrl+Shift+O
    Ctrl+/
    Ctrl+Shift+/   Ctrl+Shift+\
           Ctrl+Shift+F 
           Ctrl+D
    Ctrl+单击
 3. 代码重构
    抽取方法
    抽取接口
 4. 关联源代码
    选择源代码
 5. 代码的调试
    5.1 进入调试视图  debug as
    5.2 单步、进入
    5.3 调试后的清理
        清除断点
        清楚变量
        关闭JVM
               切换编辑java视图
 6. 项目的导入和导出
    .....
11. JDK5.0新特性
    11.1 静态导入
         import static 包名.类名.静态属性|静态方法|*
        
    11.2 增强for循环
         for( 临时变量 : 需要遍历的容器 ){
 
 
  }
  注意:在循环中改变临时变量的值,不会改变容器的值。
    11.3 可变参数
         ...
  public long gerSum( int... a ){
 
 
  }
  特点:
    1. 可变参数底层是可变数组
    2. 可以直接创建数组对象接受并按照数组操作来操作
    3. 可变参数只能在参数列表的最后一个位置
    4. 可变参数只能且只有一个
    11.4 枚举
         实现: enum   枚举值
  enum 枚举类名{
 
    // 所有的枚举值  大写形式
 
  }
        特点:
 1. 枚举类是一个类
 2. 默认继承java.lang.Enum
 3. 所有的枚举值都是枚举类的常量对象
    public static final 枚举类  枚举常量名
        4. 可以做作为switch的参数
 5. 内部可以定义属性、构造函数、函数、以及抽象函数。
12. 正则表达式
    12.1 正则的概念
         Regular Expresion  正则表达式,描述的是数据要满足的规则。
    12.2 正则的适用范围
         String  
      matches()
      split()
      replaceAll()
        java.util.regex
         Pattern  描述的正则的编译形式  Pattern pattern = Pattern.compile("正则");
  Matcher  描述的是要匹配的文本  Matcher matcher = pattern.matches(str);
         find()   查找符合规则的字符集,如果有返回true,否则返回false
  group()  返回匹配的文本字符
 
    12.3 正则的语法
         1. .  匹配任意一个字符
     a  匹配一个a
     abc
         2. 数量匹配
            ?  0 1
     +  1 ~ n  n>=1
     *  0 ~ n
     {4}
     {4, }
     {4,8}
     "a{5}"   aaaaa
        3. 简写形式
     \d  数字范围  0 ~ 9
     \D  非数字
     \s  空白字符
     \S
     \w  单词字符  [a-zA-Z0-9]
     \W
     "^[^0]\\d{5,10}$"
        4. 规则范围
 
    [a-z]  a  7
    [a-z[1-4]]    并集
    [a-z&&[a-b]]  交集
    [a-z&&[^a-b]] [c-z]
        5. 边界
    ^
    $
    \b
        6. 练习
    由5~10个字母组成的用户名    "[a-zA-Z]{5,10}"
    身份证 18位数字 0            "^[^0]\\d{16}[0-9x]{1}"
    email                        " \\w+@\\w+(\\.\\w+)+"
    密码是6为大写字母           "[A-Z]{6}"

    12.4 正则的应用
        1. 基本的数据的校验
 2. 特殊的字符正则应用
    jiao.ning.bo   "\\."
    jiao ning  bo  " +"
    jiao\ning\bo   " \\\\"
    aabbbbcccccf   "(.)\\1"  #
    aabbbbcccccf   "(.)\\1" $1
        3. 从页面上搜集email
 4. 从页面上搜集url连接

13. GUI图形界面编程(了解)
    GUI图形界面编程:java中主要使用的是AWT(java.awt.*)或Swing(javax.swing.*)
    GUI体系
    ----| Component
    -------| Container
    ----------| Window
    -------------| Frame
    -------------| Dialog
    ----------| Panel
    -------| 普通的组件
    ----------| Button
    ----------| Label
    对于Swing而言,所有的容器对象和普通的组件对象前面都加一个"J"即可。

    GUI的容器:
    ---| Window      默认不显示、JFrame是顶层的容器。
    -----| JFrame    默认的布局管理器是BorderLayout
    -----| JDialog
    ---| JPanel      默认必须添加在另外一个顶层容器中使用,不能单独的使用。默认布局管理器是FlowLayout
    常见的方法如下:
    add() :        添加组件的方法
    setLayout():   修改布局管理器的方法
    setVisiable():设置容器的可见性
    setSize()    : 设置窗口大小
    setLocation(): 设置窗口的位置
    setBounds()   : 一次性设置大小和位置
    GUI组件:
    常见的组件:JButton JLabel  JTextField  JPasswordField  JCheckBox  JTextArea 
                
    GUI布局管理器:BorderLayout(5)  FlowLayout(居中)  GridLayout(行列) CardLayout(JPanel) 
    GUI事件监听器:
       ActionListener   一个处理动作事件的action方法
       WindowListener   处理窗口事件的
       MourseListener   鼠标监听器
       KeyListener      键盘监听器
      
       因为实现接口需求全部实现所有的方法,但是在实际的项目开发中不需要将所有的实现,所以SUN提供了
       默认的监听器的所有的方法的空实现的适配器。
    GUI事件适配器:
       WindowAdapter   处理窗口事件的
       MourseAdapter   鼠标监听器
       KeyAdapter      键盘监听器
    编写GUI程序的一个模版写法:
       public class GUI{
       // 1. 声明所有的组件对象
       // 2. init()提供对象的初始化
       // 3. setConponent()设置所有的组件对象
       // 4. bindEvent()  给需要的组件监听事件
       public static void  main(String [] args){
        
   // 5. 创建GUI对象,一次调用2/3/4方法
      
       }
       }
14. 网络编程
    前面的所有知识,无论是文件的操作,还是线程的管道通信都是在本地PC上进行的,但是在实际的项目
    开发中需要实现网络中的多台PC之间的数据通信,所以SUN提供了java.net.*帮助开发人员进行网络操作。
    该网络操作也被形象的称之为Socket编程。
    网络基础知识:
         IP       IPV4   IPV6   192.168.10.1   0~255  256  = 2(8)  4字节
  port     主要是为了区分一个pc上的多个网络应用程序
  protocol 主要约束的是数据的传输的格式 TCP/IP  UDP  TCP 
    网络模型:
         网络的5层模型
    通信的协议:
         UDP:  数据的接收端可以不在
  TCP:  数据的接收端必须在发送端发送数据之前存在
    UDP通信:
      1、InetAddress  描述的是发送的数据的ip和port
  有两个子类:Inet4Address, Inet6Address
  获取对象: InetAddress getByName(String host)
 
      2、客户端
         DatagramSocket  主要用于接受可发送数据包
  发送: send(DatagramPacket p)
  DatagramPacket  主要用于打包数据
  DatagramPacket(byte[] buf, int length, InetAddress address, int port)
      3、接收端
         receive(DatagramPacket p)
    TCP通信(重点):
      1、InetAddress  描述的是发送的数据的ip和port
      2、Socket       主要描述的是客户端用于发送数据的节点对象
         Socket(String host, int port)
  getOutputStream() 获取输出流进行数据的发送
      3、ServerSocket
         Socket accept() 接受客户端发送过来的数据Socket对象
        
      4、客户端和服务器端相互的发送和接收数据。全双工的数据通信
    多线程下的TCP通信:
      将通信的数据代码写在Thread的run()或Runnable的run()
      可以启动多个线程来进行通信。
    面试:
      问? 是不是多线程可以提高通信的效率?
      理论上:多线程是降低效率的。 
 
    
15. HTML网页结构设计
    后期的主要学习的是JavaEE,主要开发的是网站的管理系统,基于页面的,所以必须要学习网页的开发。
    网页:
        1、 后缀为.html或.htm的文件
 2、 该文件内容主要由HTML标记组成
   
    HTML标记
    HTML是一种超文本标记语言,主要用于开发页面,还页面中的所有的标记都是预先定义好的,不能自己修改。
   
    文本标签:
        
  h1~h6
  p == 2<br/>
         ul
  ol
  li
  font
  pre
  sub
  sup
  span   语义标签
  div    分区标签
    表格标签:
         table
  caption
  thead
  tbody
  tfoot
  tr
  td
  th  默认作为表格的表头,文本加粗
  属性:
  align
  border
  rowspan
  clospan
  cellspacing

    多媒体标签:
         embed
  bgsound
  object
    滚动标签:
        
  marquee 
  属性:
  scrollamount  滚动的速度
  scrolldelay   滚动的延迟
  direction     滚动的方向
    超链接标签:
         <a> 的锚链接
  <a> 的超链接
  <a href="mailto:">
  <a href="javascript:">
  <a href="#">
  注意一个属性:
  target: _self   _blank  _top  _parent  可以是一个子窗口的name属性值

    集合框架标签(帧标签):
         <iframe>  实现的是画中画的效果
  <frameset>  该标签不能和body  
  rows属性切割行
  clos属性切割列
        
  一般使用相对单位的%数据来充当切割的数值。
  <frame>
  name属性:指定该子窗口的名称
  src属性: 指定该窗口打开的页面URL
        
   
   
    表单标签(重点):
        
  表单标记的出现主要是为快速的从页面上采集用的输入信息。
         表单:
   <form action="" method="" enctype="">
   </form>
   属性:
   action 该属性指定将表单的数据提交个谁(动态页面的路径)?  默认提交给自己。
   method 指定数据传输的方式  get  post
          get方式数据在浏览器的地址栏的信息的后面
    www.baidu.com?keywords=java&name=jiao 
   1、明码       不能传递密码
   2、长度受限   必须小于1K  所以如果要实现文件的上传只能post

   post方式将表单的数据写在HTTP协议的请求体中传输,对于数据的长度没有限制。
                enctype 是一种组合表单数据的格式。
  
          application/x-www-form-urlencoded  默认值,一般情况下使用。
   multipart/form-data      将不同的数据类型进行分类发送给服务器。              
   text/plain               以纯文本的形式进行发送
                            主要用于邮件的发送表单中。
                
         项目应用:
        如果要实现文件上传和下载,form表单的,method属性必须是post 且
        enctype属性必须是multipart/form-data。

  表单项:用于搜集用户数据的具体标记。
       
        <input type="" name=""  value="" /> 是空标签
            
        type:
            text
     password
     button
     submit
     reset
     file
     hidden
     checkbox
     radio
              
        name:
            如果要传递数据,那么表单项中的元素一定要有name属性,否则数据无法传输,
     获取到一定是null。
  表单提交:
       <input type="submit" value="提交">
        在表单的form标记中有一个事件属性:οnsubmit="return 指定处理函数"
       
16. CSS网页美化
    在HTML中既有结构化的标签又有样式标签(font、b、i),后期HTML中摒弃了所有的样式标签,
    一定要使用CSS样式语言进行页面的修饰。这样可以使得页面结构和样式进行分离,进而便于
    网站的维护。

    CSS语言: Cascading Style  Sheet语言。

    CSS的页面引入:
        行内: 元素的style属性
 内部: <style>
            /*样式*/
        </style>
        外部:<link href="UTL" type="text/css" rel="stylesheet" >  link标签属于HTML
 
        <style>
       
           @import URL("xx.css");                 该关键字属于CSS
          
        </style>

    选择器:
     h1{  }  标记选择器   <h1></h1>
     #my{  } ID选择器     <h2 id="my"></h2>
     .c1{  } 类选择器     <h3 class="c1 c2"></h3>
            h1,h2{ }并集选择器   <h1></h1><h2></h2>
     关系选择器
           
     p a{  }   后代选择器   <p><a></a><a></a><a></a> <span><a></a></span> </p>
     p>a{  }   直接后代选择器   <p><a></a><a></a><a></a></p>
            p a:first-child  老大选择器  <p><a></a></p>
            p a:first-child+a老二选择器
     读懂以下选择器:
     p>a:first-child+a+a{
        color:#F00;
     }
           
     超链接的特殊伪类选择器:
     LoVeHAte
     a:link{}      链接在显示的时候的样式
     a:visited{}   链接在访问过后的样式
            a:hover{}     链接在鼠标移上去之后的样式
     a:active{}    链接被激活的一瞬间的样式
    CSS属性:
          
    在实际的项目中如果要使用DOM动态操作带-的CSS属性,那么必须要进行命名的调整。
    <p style="background-color:#f00">some text</p>
    window.document.getElementByTagName("P").iterm(0).style.backgroundColor = "#00f";

    text-decoration
    CSS属性值:
           !important
    BOXModel:
          padding: 是内容到边框之间的间距
   margin :是边框到外部空白区域的举例
   margin:10px;              上下左右都为10px
   margin:0px 10px;          上下 0px  左右 10px
   margin:1px  2px 3px 10px; 上右下左
          
    浮动:
         1、浮动的元素脱离文档流,如果页面文档流中的元素遇到浮动的元素,元素内容的环绕。
  2、浮动元素的虽脱离了文档流,但是浮动的位置坐标取决于文档流中的页面位置。
  作用:布局
  练习:
      1、使用浮动+div技术模拟框架集。
      2、使用浮动+ul技术实现动态链表菜单。
    定位:
        position:absolute fixed relative
 absolute: 绝对定位,脱离文档流   z-index:12; 
           使用left  top  bottom right 来模拟x和y坐标
        fixed:   固定定位在页面的一个位置,不会随着页面滚动条的滚动来滚动。

 relative:相对的是该元素在标准文档流中没有定位之前的位置。
       
    扩展:滤镜
       *,html{
        filter:gray
       }
 
-----------  android培训 java培训 、java学习型技术博客、期待与您交流! ------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值