化妆品做网站流程比较好的网站开发项目

张小明 2026/1/12 7:39:31
化妆品做网站流程,比较好的网站开发项目,wordpress 页面简码,网店代运营公司排名类与对象的概述1.类的定义#xff1a;类是抽象的概念的#xff0c;代表一类事物#xff08;比如人类#xff0c;猫类#xff09;#xff0c;本质是一种数据类型#xff0c;类将这一类对象所共有的属性和行为进行定义#xff08;比如猫都有名字#xff0c;颜色#xf…类与对象的概述1.类的定义类是抽象的概念的代表一类事物比如人类猫类本质是一种数据类型类将这一类对象所共有的属性和行为进行定义比如猫都有名字颜色年龄2.对象的定义对象是具体的代表一个具体的事物是一个实例比如小明小花对象[属性行为]3.类与对象的关系对象是类的一个个实例个体现有类才有下面的每一个对象4.如何理解类与对象的关系//下面将类与int进行对比 int(是一个系统定义的数据类型)------10(在int的范围内10是int的实例化的一个对象) 类(是我们自己定义的数据类型)-------小白(是一只猫是猫这个我们自己定义的数据类型的一个实例化对象)5.创建一个对象实例化一个对象把类实例化都是通过类生成一个对象的描述​ //实例化一只猫这只小白是.猫的数据类型这个类里的一个单独对象 //所以猫是类而小白是对象 //对比int是类而10是对象 psvm{ Cat cat1new cat(); cat1.age 3; cat1.name 小白 cat1.color 白色 sout(第一只猫的信息 cat1.age cat1.name cat1.color) } //定义一个猫-自定义的一个数据类型 class Cat{ int age; String name; String color; }属性的概念1.定义一个类的成员变量属性字段field三种叫法都是说这个类的属性2.属性是类的组成部分可以是基本数据类型int也可以是引用类型对象、数组psvm{ } ​ class Car{ String name;//这个就是Car这个类的一个属性/成员变量/字段 double price; String color; String [] master;//字段可以是引用类型(对象、数组) }3.属性的细节属性的定义语法和变量相同Person p1 new Person()访问修饰符有四个public (公共),protected(受保护的),friendly(默认的),private(私有的)属性定义的类型可以为任意类型包括基本类型或者引用类型数组、对象如果实例化一个对象但是不赋值这个对象的属性是有默认值的​ int 0,short 0,byte 0,long 0 float 0.0 ,double 0.0 char \u0000 boolean false, String null创建对象和访问属性1.创建对象先声明再创建Cat cat;cat new Cat();需要注意cat只是对象的名字实际存储空间是在new Cat()这里类比为这个人叫小王但是这个人的身体是在new这里直接创建:Cat cat new Cat();2.访问属性用实例化的对象.属性的方式去访问属性并赋值PSVM{ Cat cat new Cat(); //下面就是访问类里面的属性 cat.age 12; cat.name 小白 } class Cat{ int age; String name; }类与对象的分配机制栈存放对象名堆存放对象方法区常量池常量比如字符串类加载信息属性行为对象名栈指向堆再指向方法区对象之间赋值在方法内是引用传递在方法外不是引用传递​ psvm{ Person p1 new Person(); p1.age 10; Person p2 p1; p1.age 80; sout(p2.age)//结果为80 } class Person{ int age; String name; }成员方法1.描述一个类的基本信息叫做属性成员变量、字段一个类的行为叫做成员方法2.举例子psvm{ Person p1 new Person(); //因为调用了方法所以运行之后就会得到 //我是一个好人 p1.speak(); //调用方法计算1-5的所有数的和 p1.cal01(5); //调用方法计算两个数之和将1赋值给a2赋值给b p1.getSum(1,2) //将方法getSum的返回值赋给变量returnSum int returnSum p1.getSum(1,2); } ​ ​ class Person{ int age; String name; //public表示是公开的 //void表示没有反会值的 //speak()speak表示方法名括号表示没有需要传递的参数也就是形参列表 //{}表示方法体 //sout表示这个方法输出了一句话 public void speak(){ sout(我是一个好人) } public void cal01(int n){ int sum 0; for(int i 1;in;i){ sumi; } } //这个方法是有返回值的类型int值 //getSum为方法名 //(int a,int b)为两个形参接收用户传入的两个数 //return sum表示把sum的值返回给调用的对象的方法 public int getSum(int a,int b){ int suma b; return sum; } }3.一种没有属性的类public class Test02 { public static void main(String[] args) { //声明一个二维数组 int[][] arr1 {{1,2},{2,3},{3,4}}; //需要现有初始化一个对象 MyTools a new MyTools(); //用这个对象去调用类里面的成员方法 a.printArray(arr1); } //这里面的class需要小写然后类名大驼峰属性和行为成员变量和成员方法小驼峰 static class MyTools { public void printArray(int[][] map){ for(int x0;xmap.length;x){ for(int y 0;ymap[x].length;y){ System.out.println(map[x][y]); } } } ​ } }4.定义public 返回数据类型 方法名形参列表{方法体return返回值}形参列表表示成员方法的输入值calint a这里面a就是输入值返回数据类型表示成员方法返回的数据类型如果是void没有返回值就没有返回数据类型return不是必须的可以没有返回值但是一定会有void成员方法使用细节返回类型细节访问修饰符作用是控制 方法的使用范围 publicprotectedfriendlyprivate一个成员方法只能最多有一个返回值如果返回多个结果可以是数组public int[] f(int a, int b){ int[] res new int[2] res[0]ab; res[1]b-b; return res; }返回值可以为任意类型基本类型或者引用类型数组对象如果方法有返回值类型则方法体最后一定加return 值而且这个值的类型一定是和返回值类型一直(需要注意基本类型不要有强转出现不然也是不可以的)public double f(){ double a 1.12; int b 3; return b//int-double是可以的 } public int f2(){ double a 1.12; int b 3; return a//double-int是不可以的 }如果方法是void方法体中可以没有return语句或者只有return方法名要遵循小驼峰原则比如getSum形参列表细节一个方法可以有零个参数也可以有多个参数中间用逗号隔开参数类型可以为任意类型包含基本类型或者引用类型调用带参数的方法时一定对应着参数列表传入相同类型或者兼容类型的参数class MytOOLS{ public double[] f1(int a ,double b){ double[] arr new double[2]; arr[0] a; arr[1] b; return arr; ​ ​ } }方法定义时的参数称为形式参数方法调用时的参数称为实际参数实参实参和形参的类型要一致或兼容个数和顺序必须一致方法体里面可以有输入、输出、变量、运算、分支、循环、方法调用但不能再定义方法方法体里面不可以嵌套定义方法调用细节相同类之间的方法调用直接调用即可class A{ public void b(){ sout(123); } public void c(){ b();//如果嗲用c方法则会输出123 } }不同类之间的方法调用需要通过对象名来调用class A{ public void say123(){ sout(123); } } class B{ public void say(){ A a new A(); a.say123(); } }方法的传参机制1.基本数据类型中传递的是值所以形参的任何改变不影响实际参数psvm{ int a 10; int b 20; AA c new AA(); c.swap(a,b); sout(a,b)//10,20因为方法调用结束swap临时栈关闭了这里的ab取的是main栈里的ab值 } class AA{ public void swap(int a,int b){ sout(a,b)//10,20因为调用了swap方法所以有了swap临时栈这里面的ab是复制main栈里ab的值 int temp a; int a b; int b a sout(a,b)//20,10这里是在swap临时栈互换了ab的值 } }2.引用类型传递的值是地址储存的值可以通过形参影响实参psvm{ int [] arr {1,2,3}; AA linshi new AA(); linshi.trest(arr); for(int i0;iarr.length;i){ sout(arr[i] ) }//结果为10023所以即使test100这个临时栈关闭了但main栈里的arr数组对应的堆里面的地址的值已经被改变了 } ​ class AA{ public void test100(int[] arr){ arr[0]100; for(int i0;iarr.length;i){ sout(arr[i] ) }//这时结果为10023因为在test100这个临时栈想要修改arr[0],找的是main栈里的arr数组对应的堆里面的地址修改的是地址的值 } }引用传递类型包含数组和对象3.如果引用传递指向的地址为null那么便不影响因为已经是新的地址了psvm{ Person p new Person(); p.age 10; p.name 小白 B b new B(); b.test(p) sout(p.name)//小白 } class Person{ int age; String name; } class B{ public void test(Person p){ p.name null; sout(p.name)//null因为指向null这个新地址而不是main栈里的p的name的地址 } }4.如果在临时栈里生成一个新的堆地址也不会影响main栈的堆地址的值psvm{ Person p new Person(); p.age 10; p.name 小白 B b new B(); b.test(p) sout(p.age)//10 } class Person{ int age; String name; } class B{ //这里的形参p确实是main栈里的p public void test(Person p){ //下面的Person p 代表的是Person这个类的一个对象p(在test临时栈中) Person p new Person(); p.age 100; sout(p.age)//100因为指向新的p的age的地址而不是main栈里的p的age的地址 } }递归recursion定义递归就是方法自己调用自己每次调用时传入不同的变量打印问题分析psvm{ Recursion r new Recursion; r.test(4); //运行结果234 } class Recursion{ public void test(int n){ if(n2){ test(n-1) } sout(n); } } /* 当main栈r.test将4这个值传给test方法里的形参时调用了test方法所以产生了一个临时栈test4在这个临时栈里因为嵌套了testn-1所以又生成了一个临时栈test3在这个临时栈里因为嵌套了testn-1所以又生成了一个临时栈test2在这个临时栈里n已经不满足分支里的n2所以便不会继续运行分支里的嵌套test方法接着会输出n2然后回到上一个test(3)的临时栈因为这个临时栈里n3所以会继续输出n3然后回到上一个test(4)的临时栈因为这个临时栈里n4所以会继续输出n4 所以r.test(4),表示在main栈将4赋值给n 因为调用方法所以开了临时test(4)栈因为分支为true 所以开了临时的test(3)栈因为分支为true 所以开了临时的test(2)栈因为分支为false所以跳出了嵌套并输出当前n的值,且回到了临时的test(3)输出当前n的值为3 回到了临时的test(4)输出当前n的值为4 一共四个栈maintest(4),test(3),test(2)按照顺序输出结果为234 简单来说最里面的嵌套是最先完成可以输出值的外面的嵌套要等里面的嵌套执行完才可以执行自己本身之外的代码 */阶乘问题factorial递归的回溯psvm{ A a new A(); int res a.factorial(5); sout(res) //输出结果为120 } class A{ public int factorial(int n){ if(n 1){ return 1; }else{ return factorial(n-1)*n; } } } /* main栈运行了a.factorial(5)所以会开临时栈f(5),此时n5因为n不等于1 所以会进入嵌套进入临时栈f(5-1),此时n4因为n不等于1 所以会进入嵌套进入临时栈f(4-1),此时n3因为n不等于1 所以会进入嵌套进入临时栈f(3-1),此时n2因为n不等于1 所以会进入嵌套进入临时栈f(2-1),此时n1因为n等于1 所以返回1这个值即f(1)这个方法计算后等于1因为这个方法已经有返回值证明最里面的嵌套已经结束 所以会在回退到上一层嵌套进行未进行完的代码也就是f2-1*2即1*2结果返回值为2 所以会在回退到上一层嵌套进行未进行完的代码也就是f3-1*3即2*3结果返回值为6 所以会在回退到上一层嵌套进行未进行完的代码也就是f4-1*4即6*4结果返回值为24 所以会在回退到上一层嵌套进行未进行完的代码也就是f5-1*5即24*5结果返回值为120 上述f2-1*2 实际上是f(n-1)*n 的计算不是2-1*2的计算 */方法递归调用规则执行一个方法是就创建一个新的受保护的独立空间栈空间栈空间的变量a和main栈空间的变量a其实是两个同名不同空间的完全不相干的值所以不冲突即方法中的局部变量是独立的不会相互影响如果方法中使用的是引用类型变量比如数组对象那么就会共享该引用类型的数据递归必须向推出递归的条件逼近否则就是无限递归是不可以的当一个方法执行完毕或者return时就会返回一定是遵守谁调用就将结果返回给谁同时当放发执行完毕或者return时该方法也就执行完毕即临时栈将会关闭方法重载定义在同一个类中允许多个同名方法存在但要求形参列表不一致且返回值类型无要求好处减轻了起名的麻烦减轻了记名的麻烦举例psvm{ //相同类的print方法只是参数类型不一致int,String,char sout(a); sout(举例); sout(123); sout(a); }注意和细节方法名必须相同参数列表必须不同参数的类型或者个数或者顺序至少有一样不相同其中着重排除一下这个情况参数名无要求public class Test02 { public static void main(String[] args) { } static class AA{ //虽然下面两个方法看似形参顺序不一样是重载但是这里面的顺序其实无影响所以会报错冲突认为一个方法写了两遍所以是错误的 public int calculate(int a ,int b){ System.out.println(a b); return ab; } public double calculate(int b ,int a){ System.out.println(a b); return ab; } } }方法的重载对于返回值类型无要求无影响可变参数如何实现定义java允许将同一个类中多个同名同功能但参数个数不同的方法封装为一个方法语法访问修饰符 返回值类型 方法名数据类型... 形参名{}举例class AA{ //int...表示接收的是可变参数类型为int可以接收多个int //舒勇可变参数时这个可变参数可以当作数组来使用 public int sum(int... num){ int res 0 for(int i 0;inum.length;i){ resnum[i] } return res; } }可变参数细节可变参数的实参可以为0个或者任意多个可变参数的实参可以为数组psvm{ int[] arr {1,2,3} T t1 new T(); t1.f1(arr) } class T{ public void f1(int... nums){ sout(nums.length) //此时输出结果为3 } }可变参数的本质就是数组可变参数可以和普通类型的参数一起放在形参列表但是必须保证可变参数在最后class T{ public void f1(String str,int... nums){ } }一个形参列表中只能出现一个可变参数全局变量字段和局部变量作用域在java编程中主要的变量有成员变量属性字段和局部变量局部变量一般指在成员方法中定义的变量全局变量属性字段成员变量作用域为整个类局部变量出属性之外的其他变量作用域为定义它的代码块中全局变量可以不赋值直接使用因为是有默认值的局部变量必须赋值后才能使用因为没有默认值class Cat{ String color//这个color为成员变量属性作用域为整个类 { double weigth//这里的体重也是局部变量作用域仅在当前代码块 } public void c(){ int age;//这里面的age就是局部变量作用域仅在c方法中有效且需要赋值因为没有默认值 sout(color)//null 证明属性是可以被调用的且有默认值 sout(age)//也会报错因为没有默认值 } public void cat(){ sout(age);//会报错因为age作用域仅在c方法中生效 } }作用域注意细节属性和局部变量可以重名访问时遵循就近原则class AA{ int age;//默认值是0 public void cat(){ int age 10; sout(age)//结果为10虽然属性有默认值但是cat里的age相聚更近所以结果是10 } }在同一个作用域中两个局部变量不能重名public void dress(){ String address 上海 String address 广东//这样是不可以的 }属性生命周期较长伴随着对象的创建二创建伴随着对象的消亡而消亡局部变量生命周期较短伴随着它的代码块执行而创建伴随着代码块结束而消亡只存在一次对应方法临时栈中psvm{ Person p1 new Person(); p1.p();//此时输出结果为king sout(p1.name);// 此时输出结果为jack } class Person{ String name jack public void p(){ String name king sout(name); } }作用域的范围不同全局变量可以被本类使用或者其他类使用通过对象调用两种方法局部变量只能在本类中对应的方法中使用也就是对应方法的代码块中使用psvm{ Person p1 new Person(); Person p2 new Person2(); p2.test2(p1); } class Person{ String name jack public void p(){ sout(name); //此时结果为jack } } class Person2{ public void test1(){ Person p1 new Person(); sout(p1.name)//结果为jack } public void test2(Person p){ sout(p.name)//结果为jack } }修饰符不同全局变量属性可以加修饰符局部变量不可以加修饰符会报错class Cat{ public int age; public void c(){ public String name miaomiao//这样一定会报错的 } }构造方法/构造器定义构造方法是类的一个特殊的方法主要作用是为了完成新对象的初始化基本语法修饰符 类名形参列表{方法体}条件说明方法名和类名相同没有返回值。就算是void也没有在创建新对象时系统会自动调用该类的构造方法完成对新对象的初始化psvm{ //当new一个对象时直接通过构造器指定名字和年龄 Person p1 new Person(jack,20); sout(p1.name);//jack sout(p1.age);//20 } class Person{ String name; int age; public Person(String pName,int pAge){ name pName; age pAge; } }细节部分一个类可以定义多个不同的构造器称为构造器的重载比如上述的构造器只给人名不给年龄构造器/构造方法一定要和类名相同构造器没有返回值构造器是完成对象的初始化而不是创建对象在创建对象时系统会自动调用该类的构造器方法不可以手动调用如果没有定义构造器系统会自动默认给类生成一个无参构造器class Dog{ /* Dog(); */ //上述为默认构造器 }一旦定义了自己的构造器默认的构造器将会被覆盖就不能再使用默认的无参构造器如果非要用无参构造器需要自己重新定义psvm{ Dog d1 new Dog();//这个时候会报错因为已经没有默认构造器了 } class Dog{ public Dog(String dName){ } // Dog();//自己定义一遍默认构造器main栈的d1就可以用了 }对象创建的流程分析psvm{ Person p new Person(小倩,20); } class Person{ int age 90; String name; Person (String n,int a){ name n; age a; } }加载Person类信息Person.class只会加载一次在堆中分配空间地址完成对象的初始化默认初始化即 age0namenull显式初始化age90namenull构造器初始化age 20 name 小倩把对象在堆中的地址返回给p只是名字对象还是在堆里this引出this构造器的输入参数名不是很友好如果能将dName改成那么dAge改成age就好了但是按照作用域的原则name的值就是null所以为了解决作用域的问题加了this就解决了psvm{ Dog d new Dog(13,小白); d.info(); } class Dog{ public int age; public String name; public Dog(int age,String name){ this.name name; this.age age; } public void info(){ sout(age name) } }如何理解this 两个人都说我的手但是a说就是a的手b说就说b的手哪个对象调用这个this就指向哪个对象psvm{ Dog d new Dog(13,小白); } //谁调用构造器这个this就指向谁 //对象调用了这个构造器this就指向这个对象本身 //如果是换了另一个对象那么这个this就指向另一个对象本身 public Dog(int age,String name){ // this就是当前对象的属性 this.name name; this.age age; }this注意细节this关键字可以用来访问本类的属性方法构造器this有用于区分当前类的属性和局部变量// 区分局部变量 class Dog{ public int age; public String name; public Dog(int age,String name){ this.age age; this.name name; } } //区分属性 class T{ int age 10; String name jack public void f1(){ //这个name为局部变量 String name smith sout(name age)//结果为smith 10 //**this.age 和 this.name 访问的是当前T对象的属性** sout(this.name age)//jack 10 } }访问成员方法的语法;this.方法名参数列表class T{ public void f1(){ sou(调用了f1方法) } public void f2(){ sout(调用了f2方法) //第一种方法 f1(); //第二种方法 this.f1(); //两者区别要在继承才能体现目前来说两种写法都可以被调用 } }访问构造器的语法:this(参数列表)这个只能在构造器中使用只能在构造器中访问另一个构造器如果是这个用法必须放在第一条语句中psvm{ T t new T(); } calss T{ public T(){ this(15;jack); sout(T()构造器) } public T(int age,String name){ sout(T(int age,String name)构造器) } }this不能在类定义的外部使用只能在类定义的方法中使用例子//定义一个Person类里面有nameage属性。提供compareTo方法判断属性是否相等相等返回true不一样返回false psvm{ Person p1 new Person(10,jack); Person p2 new Person(15,smith); //结果一定为false sout(p1.compareTo(p2)); } class Person{ int age; String name; public Person(int age ,String name){ this.name name; this.age age; } public boolean compareTo(Person p){ //this.name为p1的值p.name为p2的值 return this name.equals(p.name) this.age p.age; } }
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

医院网站建设利法拉网络贵州网站开发哪家好

2025年,AI眼镜成为科技行业最炙手可热的赛道之一。从互联网巨头到手机厂商,从新势力车企到AR创业公司,各方力量密集发布新品,掀起一场被业内称为“百镜大战”的激烈竞争。据不完全统计,仅2025年上半年,全球…

张小明 2026/1/9 17:27:19 网站建设

域名和网站一样吗建行网址

近日,微软通过官方 YouTube 频道发布视频,明确呼吁 Windows 10 用户尽快升级至 Windows 11。紧接着微软又为 Windows 11 的节能模式带来进一步优化,新增了针对台式机的能源节省功能。根据消息,Beta 渠道的最新 Windows 11 预览版中…

张小明 2026/1/9 20:34:43 网站建设

qq空间的网站wordpress主题后空白

3种智能连接方法如何让网络延迟降低60% 【免费下载链接】astral 项目地址: https://gitcode.com/gh_mirrors/astral7/astral 你是否曾在远程办公时因为网络卡顿而错过重要信息?或者在进行在线协作时,频繁的网络中断让你感到沮丧?这些…

张小明 2026/1/10 20:34:38 网站建设

重庆建设工程信息网网站做建站较好的网站

SNKRX游戏开发指南:构建蛇形英雄射击游戏 【免费下载链接】SNKRX A replayable arcade shooter where you control a snake of heroes. 项目地址: https://gitcode.com/gh_mirrors/sn/SNKRX SNKRX是一款基于LVE2D引擎开发的街机射击类Roguelite游戏&#xff…

张小明 2026/1/9 17:27:22 网站建设

工程建设开工网站信息建被采集的网站

还在为B站视频下载烦恼?这款跨平台工具让你一键搞定 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…

张小明 2026/1/10 20:34:20 网站建设

哪家公司做网站最好天元建设集团有限公司破产了吗

Arduino IDE 2.0 开发全攻略:5步打造你的嵌入式项目 【免费下载链接】arduino-ide Arduino IDE 2.x 项目地址: https://gitcode.com/gh_mirrors/ar/arduino-ide 想要快速上手Arduino开发却不知从何开始?Arduino IDE 2.0作为新一代嵌入式开发工具&…

张小明 2026/1/10 2:50:20 网站建设