四、lambda表达式、常用API

17 篇文章 1 订阅
订阅专栏

lambda表达式

  • 函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做”

语法:(形参) 箭头 {代码块}

(形参) -> {方法体}

形参:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
方法体:是我们具体要做的事情

前提

  • 1必须是一个接口 不能是类 也不能是抽象类

  • 2接口中只有一个抽象方法

演示:

public class Demo01 {
    public static void main(String[] args) {
        start(new Animal() {
            @Override
            public void eat() {
                System.out.println("222");
            }
        });

        // lambda  ()->{}
        start(() -> {
            System.out.println("222");
        });

    }

    public static void start(Animal a) {
        a.eat();
    }
}

interface Animal {
    public void eat();
}

有参无返回值练习

案例

  1. 首先存在一个接口(StringHandler)

  2. 在该接口中存在一个抽象方法(printMessage),该方法是有参数无返回值

  3. 在测试类中存在一个方法(useStringHandler)方法的的参数是StringHandler类型的在方法内部调用了StringHandler的printMessage方法

代码

public class StringHandlerDemo {
    public static void main(String[] args) {
        //匿名内部类的形式
        useStringHandler(new StringHandler() {
            @Override
            public void printMessage(String msg) {
                System.out.println(msg);
            }
        });

        //lambda表达式的形式
        useStringHandler((String msg) -> {
            System.out.println(msg);
        });
    }

    public static void useStringHandler(StringHandler stringHandler) {
        stringHandler.printMessage("itheima");
    }
}

//必须是一个接口    不能是类 也不能是抽象类
//接口中只有一个抽象方法
interface StringHandler {
    void printMessage(String msg);
}

省略注意点

  • 参数类型可以省略

  • 当形参只有一个的时候 小括号省略

  • 当方法体只有一句的时候 大括号省略

无参有返回值

需求

  1. 首先存在一个接口(RandomNumHandler)

  2. 在该接口中存在一个抽象方法(getNumber),该方法是无参数但是有返回值

  3. 在测试类中存在一个方法(useRandomNumHandler)方法的的参数是RandomNumHandler类型的在方法内部调用了RandomNumHandler的getNumber方法返回一个随机数

代码

public class Demo01 {
    public static void main(String[] args) {
		//匿名内部类的形式
        useStringHandler(new StringHandler() {
            @Override
            public void printMessage(String msg) {
                System.out.println(msg);
            }
        });

        //lambda表达式的形式 注意有参数
        useStringHandler((String msg) -> {
            System.out.println(msg);
        });

        //形参只有一个 类型和小括号可以省略, 方法体只有一句 大括号和分号可以省略
        useStringHandler(msg -> System.out.println(msg));
    }

    public static void useRandomNumHandler(RandomNumHandler r) {
        int num = r.getNumber();
        System.out.println("获取到返回的数据num=" + num);
    }
}

interface RandomNumHandler {
    //方法 有返回值 无参数
    int getNumber();
}

有参数 有返回值

  • 只有一句代码 并且是返回值时 可以省略 return 省略分号 省略大括号

public class Demo01 {
    public static void main(String[] args) {
        userAdd(new Inter1() {
            @Override
            public int sum(int a, int b, int c) {
                return a + b + c;
            }
        });

        //有参数有返回值练习
        userAdd((int a, int b, int c) -> {
            return a + b + c;
        });
        
        //只有一句代码 并且是返回值时  可以省略 return 省略分号 省略大括号
        userAdd(( a,  b,  c) ->a + b + c);
    }

    public static void userAdd(Inter1 i1) {
        int number = i1.sum(10, 20, 30);
        System.out.println(number);
    }
}


interface Inter1 {
    //有参数 有返回值
    int sum(int a, int b, int c);
}

关于省略

  • 1 参数类型可以省略 ,要省略就全部参数都省略

  • 2 当形参只有一个的时候 小括号省略

  • 3 当方法体只有一句的时候 大括号省略

    • 只有一句代码 并且是返回值时 可以省略 return 省略分号 省略大括号

lambda和匿名内部类

  • 匿名内部类 可以是类或者抽象类或者接口

    • lambda 只能是接口 只能有一个抽象方法

  • 匿名内部类 在使用的时候,会编译出一个class文件

    • lambda 会在真正执行的时候,动态的生成一个class,运行完就没有了

代码块

局部代码块(很少用,理解作用 就可以 )

  • 在方法中定义 方法调用时被执行

  • 用于控制变量的生命周期

代码

public class Demo01 {
    public static void main(String[] args) {
        calc();
    }

    public static void calc() {
        {
            //计算两个数的和
            int a = 10;
            int b = 20;
            int result = a + b;
        }

        //a = 30;

        //计算两个数的差
        int c = 100;
        int d = 80;
        int result1 = c - d;

    }
}

构造代码块

  • 在类中定义, 每次构造方法执行之前执行

  • 实际应用:在多个构造方法中,如果有相同执行代码,就可以抽取到构造代码块中,写一次就好

代码演示

  • 学生类

  • 要求不管用有参还是无参构造,都希望初始化school的值为 黑马学校,所以把赋值代码写到构造代码块中

package com.heima.test5;

public class Student {
    String name;
    int age;
    String school;

    {
        this.school = "黑马学校";
        System.out.println("构造代码块");
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;

        System.out.println("走了有参构造");
    }

    public Student() {
        System.out.println("走了空参构造");
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", school='" + school + '\'' +
                '}';
    }
}

测试代码

public class Demo02 {
    public static void main(String[] args) {
        Student stu = new Student("zhansgan", 20);
        System.out.println(stu);

        Student stu1 = new Student();
        System.out.println(stu1);
    }
}

//打印结果

//构造代码块
//走了有参构造
//Student{name='zhansgan', age=20, school='黑马学校'}
//构造代码块
//走了空参构造
//Student{name='null', age=0, school='黑马学校'}

静态代码块

  • 在类中定义 用static修饰

  • 第一次使用这个类时被执行,而且只执行一次。

  • 用于初始化静态成员变量

代码

  • 学生管理类

    • stus 是用来装学生的集合,定义为静态的,是为了 不论StuManager创建几次对象,都只有一个集合

    • static的静态代码块 是为了在类加载的时候就初始化stus 添加一些学生

import java.util.ArrayList;

public class StudentManager {

    static ArrayList<Student> list = new ArrayList<>();

    static {
        list.add(new Student("张三",12));
        list.add(new Student("lisi",13));
        list.add(new Student("xming",14));
    }

    //public StudentManager() {
    //    list.add(new Student("张三",12));
    //    list.add(new Student("lisi",13));
    //    list.add(new Student("xming",14));
    //}

    public void addStu(Student stu) {
        list.add(stu);
    }

    public void show() {
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu);
        }
    }

}

测试代码

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //add();
        //add();
        //add();

        new StudentManager().show();
        new StudentManager().show();

    }

    public static void add() {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入名字");
        String name = sc.next();
        System.out.println("输入年龄");
        int age = sc.nextInt();
        //创建学生对象
        Student s = new Student(name, age);
        //创建学生管理
        StudentManager stu = new StudentManager();
        //添加学生
        stu.addStu(s);
        //查看所有学生
        stu.show();
    }
}

常用API

Math(不用背,知道能做什么即可)

  • 1、Math类概述

    • Math 包含执行基本数字运算的方法

  • 2、Math中方法的调用方式

    • Math类中无构造方法,但内部的方法都是静态的,则可以通过 类名.进行调用

  • 3、Math类的常用方法

代码

public static void main(String[] args) {

    //        public static int abs(int a)		返回参数的绝对值
    //        int abs = Math.abs(10);
    //        System.out.println(abs);

    System.out.println(Math.ceil(3.14)); //4.0  向上 取整
    System.out.println(Math.floor(3.14));//3.0  向下 取整

    System.out.println(Math.ceil(-3.14)); //-3.0  向上 取整
    System.out.println(Math.floor(-3.14));//-4.0  向下 取整

    //        public static int round(float a)	四舍五入
    //        long round = Math.round(10.1);
    //        System.out.println(round);
    //
    //        long round1 = Math.round(1.9);
    //        System.out.println(round1);

    //        public static int max(int a,int b)	返回两个int值中的较大值
    //        int max = Math.max(10, 20);
    //        System.out.println(max);

    //        public static int min(int a,int b)	返回两个int值中的较小值
    //        int min = Math.min(10, 20);
    //        System.out.println(min);

    //        public static double pow(double a,double b)返回a的b次幂的值
    //        double pow = Math.pow(2, 3);
    //        System.out.println(pow);

    //        public static double random()		返回值为double的正值,[0.0,1.0)
    for (int i = 0; i < 10 ; i++) {
        double random = Math.random();
        System.out.println(random);
    }
}

System

  • System.exit() 停止虚拟机 

package com.heima.test7;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        boolean isRun = true;

        while (isRun) {
            System.out.println("请输入选择");
            int num = sc.nextInt();
            switch (num) {
                case 1:
                    System.out.println("周一区 健身");
                    break;
                case 2:
                    System.out.println("退出");
                    //isRun = false;
                    //break;
                    //return;
                    System.exit(0);
            }

        }
    }
}

currentTimeMillis() 返回当前时间 从1970年开始到现在的毫秒数 (掌握)

long time = System.currentTimeMillis();//1664431123855
System.out.println(time);

arraycopy(数据源数组, 起始索引, 目的地数组, 起始索引, 拷贝个数) 数组copy

   public static void main(String[] args) {

        //arraycopy(数据源数组, 起始索引, 目的地数组, 起始索引, 拷贝个数)	数组copy
        int [] arr1 = {1,2,3,4,5};
        int [] arr2 = new int[10];
        //需求:我要把arr1中的数据拷贝到arr2中.
        //System.arraycopy(arr1,0,arr2,0,arr1.length);

        /*for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }*/

        //我要把arr1最后两个元素,拷贝到arr2的最后两个索引上
        System.arraycopy(arr1,3,arr2,8,2);
        for (int i = 0; i < arr2.length; i++) {
            System.out.println(arr2[i]);
        }
    }

Object类的toString和equals

toString方法 (会重写toString )

  • 直接打印对象,就是打印的toString方法的返回值

  • 可以重写toString,在方法中返回自己希望打印的内容,快捷键alt+insert 弹出框选中toString

  • 查看一个类的继承机构 ctrl+h

  • ctrl+shift+alt+u 打开继承和实现的结构,在结构图内,进入某个源码,选中点击f4

  • alt+7 看当前类的结构

  • ctrl+n 弹出 搜索框,可以搜索类

equals方法(会重写,自己尝试看源码)

  • equals方法的作用

    • 用于对象之间的比较,返回true和false的结果

    • 举例:s1.equals(s2); s1和s2是两个对象

  • 重写equals方法的场景

    • 不希望比较对象的地址值,想要结合对象属性进行比较的时候。

  • 重写equals方法的方式

      1. alt + insert 选择equals() and hashCode(),IntelliJ Default,一路next,finish即可

      1. 在类的空白区域,右键 -> Generate -> 选择equals() and hashCode(),后面的同上。

  • 示例代码:

class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        //this -- s1
        //o -- s2
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Student student = (Student) o; //student -- s2

        if (age != student.age) return false;
        return name != null ? name.equals(student.name) : student.name == null;
    }
}
public class ObjectDemo {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setName("xiaoming");
        s1.setAge(10);

        Student s2 = new Student();
        s2.setName("xiaoming");
        s2.setAge(10);

        //需求:比较两个对象的内容是否相同
        System.out.println(s1.equals(s2));
    }
}

面试题(理解打印结果)

  • 看程序,分析结果

    • String类中的equals方法 要求参数必须字符串,否则不会比较属性值而直接返回false

    • StringBuilder类中是没有重写equals方法,用的就是Object类中的.

public class Demo03 {
    public static void main(String[] args) {
        String s = "abc";

        StringBuilder sb = new StringBuilder("abc");

        System.out.println(s.equals(sb));//false

        System.out.println(sb.equals(s));//false
    }
}

Objects(了解)

//       public static String toString(对象)  		 返回参数中对象的字符串表示形式。
        Student s = new Student("小罗同学", 50);
        System.out.println(Objects.toString(s));
        System.out.println(s);

        System.out.println("------------------------------------------------------------------------");
//        public static String toString(对象, 默认字符串)  返回对象的字符串表示形式。如果对象为空,那么返回第二个参数.
//       Student s1 = new Student("小花同学", 23);
        Student s1 = null;
        System.out.println(s1);//null
        String result1 = Objects.toString(s1, "我是一个默认值");
        System.out.println(result1);

//        public static Boolean isNull(对象)		 判断对象是否为空
        Student s2 = null;
        //Student s2 = new Student();
        boolean result2 = Objects.isNull(s2);
        System.out.println(result2);


//        public static Boolean nonNull(对象)		 判断对象是为非空
        Student s3 = new Student();
        //Student s3 = null;
        boolean result3 = Objects.nonNull(s);
        System.out.println(result3);

二分查找

前提: 数据是有序的

查找一个数 在一个数组中的索引位置,如果存在返回索引,如果不存在返回-1

    public static void main(String[] args) {
        int[] arr = new int[]{1, 3, 6, 8, 10, 19, 27, 35, 53, 65};

        int index = binarySearch(530, arr);
        
        System.out.println("index=" + index);
    }

    /**
     * 查询num在arr中的位置
     *
     * @param arr
     * @param num
     * @return 返回num的索引  如果不存在 返回-1
     */
    private static int binarySearch(int[] arr, int num) {
        int min = 0; //查找范围的最小索引
        int max = arr.length - 1; //查找范围的最大索引

        while (max >= min) {
            int mid = (min + max) / 2;
            if (num > arr[mid]) {
                //如果比mid位置的数据大 说明num在mid的右侧
                min = mid + 1; //把查找范围的最小索引 移动到mid+1的位置
            } else if (num < arr[mid]) {
                max = mid - 1; //查找范围的最大索引  移动到mid-1的位置
            } else {
                //如果相等 就找到了mid就是要返回的索引
                return mid;
            }
        }
        //如果代码走到这里  说明没有找到 返回-1
        return -1;
    }

 

使用Java 8中的Lambda表达式实现工厂模式
08-30
结合Lambda表达式,我们还可以使用Java 8的Stream API来动态地创建对象,例如,如果有一系列的形状类型,我们可以构建一个Map,将形状类型映射到对应的`Supplier`: ```java Map, Supplier<Shape>> shapeSuppliers ...
JAVA8-lambda表达式2:常用的集合类api
weigeshikebi的博客
04-14 763
今天看到新闻,很多新闻类APP被处罚,其中就有今日头条的内涵段子,原因是低俗,涉黄。对于这种,我是拍手称快的。做为一个码农,本质还是社会人,要有社会责任心,这种引导社会不良风气的东西,也要拒绝的,多少学生被游戏农药坑,女生被所谓的直播脱光衣服?做一个正直的人前面介绍了Lambda表达式,有了初步概念,这一节我们来看下,它对于编程来说有什么好处,是不是能提高效率,让程序理简单?Lambda表达式对集...
Lambda表达式所有API整理
热门推荐
lydms的博客
04-12 1万+
常用Lambda表达式API整理
java lambda常用api
码眼的博客
10-14 487
1、循环遍历 和普通for循环一样,如果在循环内部有通讯相关的耗时操作,建议使用原始的for循环。 lists.stream().forEach(l->{ System.out.println(l); }); Map<String,String> map = new HashMap<>(); map.forEach((k,...
Lambda表达式 方法引用 StreamAPI(全到不能再全了)
IamAlwB的博客
11-25 355
之所以学习Lambda表达式 一方面减少自己的工作量 一方面也要看懂这是什么 别人为什么这样写 还有就是 别人用匿名内部类写了很长很长 而我使用Lambda表达式写了一两行 我们实现了同样的需求 这样不就显得很牛吗(哈哈哈)
Java-APIlambda表达式4种方法引用
m0_64210833的博客
03-25 4212
首先lambda表达式4种方法引用可以归纳为下列4种: 1,静态方法引用 2,实例方法引用 3,构造方法引用 4,特殊方法引用
Java基础笔记】Lambda表达式和函数式接口.docx
10-25
Java中的Lambda表达式和函数式接口是Java 8引入的重要特性,它们极大地简化了代码,尤其是在处理函数式编程场景时。下面将详细解释这两个概念及其应用。 **一、Lambda表达式** Lambda表达式是一种简洁的表示匿名...
javaweb开发常用api文档合集
12-06
2. **jdk api 1.8谷歌翻译版.CHM** 和 **jdk api 1.8.CHM**:这两个版本分别提供了Google翻译后的API文档和原始英文版,1.8是Java的一个重要版本,引入了lambda表达式、Stream API、默认方法等特性,对Java开发者来...
常用API集合
04-10
本资源“常用API集合”涵盖了Java的JDK 7和8版本,以及JavaScript库jQuery的1.7和1.8版本,这些都是开发过程中非常重要的API集合。 1. **JDK 7 API**: JDK 7(Java Development Kit 7)引入了许多新特性,包括: ...
Java8】Lambda表达式 和 Stream API 详解笔记.zip
11-26
视频地址:https://www.bilibili.com/video/BV1ut411g7E9 【Java8】Lambda表达式 和 Stream API 详解笔记 md文档
java8之接口的默认方法和lambda表达式小结
09-27
java8之接口的默认方法和lambda表达式小结。 java8之接口的默认方法和lambda表达式小结。 java8之接口的默认方法和lambda表达式小结。
初识Lambda-含API及Demo
qq_40274514的博客
08-26 245
/* * 一、Lambda 表达式的基础语法:Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符 * 箭头操作符将 Lambda 表达式拆分成两部分: * * 左侧:Lambda 表达式的参数列表 * 右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体 * * 语法格式一:无参数,无返回值 * (...
常用API大全
JAVA开发者@邢先生
02-19 760
1.API 1.1 API概述【理解】 什么是APIAPI (Application Programming Interface) :应用程序编程接口 java中的API ​ 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可,我们可以通过帮助文档来学习这些API如何使用。 1.2 如何使用API帮助文档【应用】 打开帮助文档 找到索引选项卡中的输入框 在输入框中输入Random 看
Java 之 lambda 表达式(二)---- Stream 操作 API
最新发布
流华追梦的专栏
11-28 1033
Stream,就是 JDK8 依托于函数式编程特性为集合类库做的一个类库,它其实就是 JDK 提供的函数式接口的最佳实践。它能让我们通过 lambda 表达式更简明扼要的以流水线的方式去处理集合内的数据,可以很轻松的完成诸如:过滤、分组、收集、归约这类操作。Stream 特点:1. Stream 自己不会存储元素;2. Stream 不会改变源对象,Stream 操作会返回一个新的Stream;3. Stream 操作是延迟执行的,这意味着等到获取结果时,Stream 才会执行。
Java-常用API、Lambda、常见算法
qq_61434231的博客
07-20 207
Java-常用API、Lambda、常见算法
JavaAPI-lambda
zhangxuelong461的博客
12-25 170
lambda lambda简介: lambda表达式是JDK8之后推出的新特性 lambda使得我们可以"函数式编程" lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中) lambda最直接的感受是可以以更精简的代码完成匿名内部类的创建 lambda语法: (参数列表)->{    方法体 } (parameters) -> e...
AWS API Gateway和Lambda的简单测试
scruffybear的专栏
12-02 1783
文章目录具体流程创建Lambda应用创建API GatewayS3 Bucket网页测试触发API Gateway和Lambda函数碰到S3 Bucket删除问题术语Reference 测试了一下使用API Gateway来触发Lambda应用,并将结果显示在网页上。 Lambda支持语言为: Node.js,Java,Python,C#,Go,PowerShell,等等。它具有无需管理服务器,根...
轻松了解jdk8之lambda表达式常用API
IT-CRUD
03-21 420
这两年,基本所有的公司都由之前的JDK7转战JDK8,还记得上次去饿了么面试给的面试题,第一题就是用lambda实现一个功能,当时对lambda表达式基本是零了解,然后……。现在随着慢慢的使用,也慢慢了解lambda表达式真的是一个好东西,可以大大的简化以前的代码,下面在说常用lambda表达式的时候,会附上对应之前需要的代码量。相信你也会喜欢上它的。 一组对象的分组 场景:Collection下的用户对象集合,根据用户的年龄分组。 代码: List<User> users = new Ar
写文章

热门文章

  • 摸鱼指南—edge冲浪游戏(作弊码) 48571
  • 羊了个羊小游戏 5941
  • JS华容道小游戏 5238
  • Java获取本月、本周的第一天&最后一天 5198
  • JS控制视频播放、暂停、倍速、音量等功能 4363

分类专栏

  • JavaWeb教程 11篇
  • JavaSE教程 17篇

最新评论

  • Java获取本月、本周的第一天&最后一天

    神笔码农s: LocalDate nowDate = LocalDate.now(); System.out.println("本年第一天:" + nowDate.with(TemporalAdjusters.firstDayOfYear())); System.out.println("本年最后一天:" + nowDate.with(TemporalAdjusters.lastDayOfYear())); System.out.println("本月第一天:" + nowDate.with(TemporalAdjusters.firstDayOfMonth())); System.out.println("本月最后一天:" + nowDate.with(TemporalAdjusters.lastDayOfMonth())); System.out.println("本周第一天:" + nowDate.with(DayOfWeek.MONDAY)); System.out.println("本周最后一天:" + nowDate.with(DayOfWeek.SUNDAY));

  • 摸鱼指南—edge冲浪游戏(作弊码)

    Mickey2008_08: 个人纪录71695表情包

  • 模仿王者的炫酷前端页面

    weixin_42530658: 大佬 模仿王者的炫酷前端页面可以分享一下吗

  • KOF拳皇游戏(JS游戏)

    渣鑫: 能让我看看js是怎么写的吗?

  • KOF拳皇游戏(JS游戏)

    渣鑫: 能让我看看js是怎么写的吗?

大家在看

  • 【虚幻C++】001.UInterface接口使用中遇见的问题 170
  • Linux下使用valgrind分析C++程序的内存泄漏 928
  • 小白也能看懂 | 大模型的6个评估指标,大语言模型如何准确预测下一个词?为软件开发生命周期而生开源代码大模型CodeFuse,以及支持 VS Code 插件的国产代码大模型CodeShell
  • STM32软件模拟I2C的实现方式(一) 1183
  • Android studio-进度条-通知-新的窗口

最新文章

  • 微信复刻版 仿真聊天记录(wx)
  • 移动端双击、长按事件
  • SQL 语句性能优化策略
2024年2篇
2023年25篇
2022年32篇
2021年2篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家黄飞鸿武术玻璃钢雕塑价格学校校园玻璃钢景观雕塑设计南昌玻璃钢雕塑定做商场景观美陈杨浦区小型玻璃钢雕塑制造厂家玻璃钢十二圣斗士雕塑阳江玻璃钢景观雕塑平洲校园玻璃钢人物雕塑江苏玻璃钢花盆花器玻璃钢雕塑道具工浙江玻璃钢雕塑摆件销售厂家玻璃钢造型雕塑服务仿真玻璃钢雕塑设计青海仿真玻璃钢雕塑商场卡通美陈导视牌安徽欧式玻璃钢雕塑哪家便宜贵州主题玻璃钢雕塑厂句容玻璃钢花盆花器牧野玻璃钢雕塑设计呈贡玻璃钢雕塑厂家咨询龙泉玻璃钢雕塑咨询常州蛋形玻璃钢花盆黄石玻璃钢雕塑造型贴金贵阳玻璃钢孔子雕塑厦门商场美陈制作公司老蒋玻璃钢花盆模具句容秋季商场美陈江苏公园玻璃钢雕塑价位重庆商场美陈雕塑西宁玻璃钢雕塑多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化