构造方法:
在一个类中定义方法如果同时满足一下三个条件,该方法则称为构造方法
1 方法名与类名相同
2 字方法名的前面没有返回值类型的声明
3 在方法中不能使用return语句返回一个值
构造方法的作用:
1、构造对象,执行了构造方法,就一定会在堆内存上为对象开辟独立的内存。
2、初始化对象属性,可以为对象属性做一些初始化工作。
注意:构造方法没有返回值,构造方法的方法名必须和类名相同 ,同一个类中,多个构造方法之间也是可以相互调用的,一般来说,定义好一个类后,一般都会准备两个构造方法,一个是没有参数的,一个包含全部属性参数的。
构造方法的重载
方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。
eg:定义完一个带参数的person()构造方法后,就可以通过此构造方法来创建一个person对象
Person类中定义了两个构造方法,它们构成了重载。在创建p1对象和p2对象时,根据传入参数的不同,分别调用不同的构造方法。
如果同一个类中包含了两个或两个以上方法的方法名相同,但参数列表不同,则被称为方法重载
注意:在Java中的每一类都至少有一个构造方法,如果在一个类中没有定义的构造方法,系统会自动为这个类创建一个默认的构造方法,这个默认的构造方法没有参数,在其方法体中没有任何代码,即什么也不做。
三个原则:在同一个类中;方法名相同;参数列表不同,即参数个数或对应位置上的类型不同。this关键字代表当前所在类,将来产生的对象,即将来用该类的new出来的对象用于获取当前类的对象的引用。
this关键字:通过this关键字可以明确地去访问一个类的成员变量,解决与局部变量名称冲突的问题
“this”代表了当前所在类将来产生的对象,即将要用该类new出来的对象,用于获取当前类的对象的引用。
this指代当前对象可以调用当前类的成员,
调用构造方法,this出现在构造方法中的第一行
属性一般不在类以外的方法直接调用,需要对外提供方法:
public void setName(string name){
this.name=neme;
}
public void setAge(int age){
this.age=age;
}
获取值时:
public string getName(){
return this.name;
}
public string getAge(){
return this.age;
}
Java引用库跟文件目录结构相似
包的概念:类库分级可以解决类的命名冲突,类文件管理等问题。
package用来定义包
package语句必须作为Java源文件的第一条非注释性语句
import 导入包
import 包名.; //导入指定句中的所有类。
封装是面向对象的特性之一
封装实际上把该隐藏的隐藏,该暴露的暴露,这些都需要通过Java访问控制符来实现。
访问控制机制
private:只能被当前类中其他成员访问,类外看不到
缺省:可以被同一包中所有类访问
protected(子类访问权限):被声明为protected的成员既可以被同一个包中的其他类访问。
public:任意位置可以访问**
public class Student{
//成员
private String name;
private String id;
public int count=0;
}
public Student(string name,string id){
this.name=name;
this.id=id;
}
publicc Student(){
}
public void setName(string name){
this.name=name;}
public string getName(){
return this.name;}
public void setId(string id){
this.id=id;}
public string getId(){
return this.id;}
public string toString(){
return“name:”+name+“,id:”+id;
}
主函数
package
public class Main{
public static void main(string args[]){
student student=new student("AA","1502001");
student student1=new student("BB","1502002");
system.out.println(student.tostring());
}
}
静态成员static
用于输出计算,将动态变为静态,
普通方法和静态方法是否可以相互调用
静态方法不能指向非静态方法
静态方法可以在任意方法调用
上机课程作业
1 对任何一个自然数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在1950年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……
程序内容:import java.util.;
public class Main{
public static void main(String arge[]){
int n;
Scanner in=new Scanner(System.in);
while(in.hasNext()){
n=in.nextInt();
int sum=0;
while(n!=1){
if(n%2==0){
n=n/2;
sum=sum+1;
}
else{
n=(3n+1)/2;
sum=sum+1;
}
} System.out.println(sum);
}
}
}
2读入一个自然数n,计算其各位数字之和,用汉语拼音写出和的每一位数字。
程序内容:import java.util.*;
public class Main{
public static void main(String args[]){
Scanner s=new Scanner(System.in);
while (s.hasNext())
{
String num=s.next();
String in[] = {"ling","yi","er","san","si","wu","liu","qi","ba","jiu"};
int sum=0,k=0;
int temp[]=new int[10];
for(int i=0;i<num.length();i++)
{
sum=sum+num.charAt(i)-48;
}
while(sum!=0)
{
temp[k]=sum%10;
sum=sum/10;
k++;
}
for(int i=k-1;i>=0;i--)
{
if(i!=0)
{
System.out.print(in[temp[i]]+" ");
}else {
System.out.print(in[temp[i]]);}
}
System.out.println();
}
}
}
3已知函数f(x)=x2+2+2x根据输入的x值计算f(x),运算结果不超过int范围,x>=0
程序内容:
import java.util.;
public class Main{
public static void main(String arge[]){
int x,y=0;
Scanner in =new Scanner(System.in);
while(in.hasNext()){
x=in.nextInt();
if(x>=0){
y=(int)(xx+2+Math.pow(2,x));
}
System.out.println(y);
}
}
}
4已知函数,输入a、b的值计算结果,小数点后留2位
程序内容:import java.util.;
public class Main {
public static void main(String args[]){
int a,b;
double y;
Scanner in = new Scanner(System.in);
while(in.hasNext()){
a = in.nextInt();
b = in.nextInt();
y=Math.sqrt(aa+b*b)/2;
System.out.println(String.format("%.2f",y));
}
}
}
5已知函数 ,根据输入的x值计算f(x)
程序内容:import java.util.;
public class Main{
public static void main(String arge[]){
int x=0,y=0;
Scanner in =new Scanner(System.in);
while(in.hasNext()){
x=in.nextInt();
if(x<-5){
y=xx+1;
}else if(x<8&&x>=-5){
y=xxx-1;
}else{
y=x+5;
}
System.out.println(y);
}
}
}
6编写程序计算长方体的表面积和体积
程序内容:import java.util.;
public class Main {
public static void main(String args[]){
int c,k,g;
int b=0,t=0;
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
c = in.nextInt();
k = in.nextInt();
g = in.nextInt();
t=ckg;
b=(ck+cg+kg)2;
System.out.println(b+" "+t);
}
}
}
7从一组数据中找出最大数和最小数
程序内容:import java.util.;
public class Main {
public static void main(String args[]){
int [] num=new int[50];
int max,i,min;
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
num[0]=in.nextInt();
for(i=1;i<=num[0];i=i+1)
{
num[i]=in.nextInt();
}
max=num[0];
min=num[1];
for(i=2;i<=num[0];i++)
{
if(max<num[i])
{
max=num[i];
}else if(min>num[i])
{
min=num[i];
}
}
System.out.println(max+" "+min);
}
}
}
8从键盘接收三个数,按从小到大顺序排序。
程序内容:import java.util.*;
public class Main {
public static void main(String args[]){
int [] num=new int[50];
int max,i,min;
Scanner in = new Scanner(System.in);
while(in.hasNext())
{
num[0]=in.nextInt();
for(i=1;i<=num[0];i=i+1)
{
num[i]=in.nextInt();
}
max=num[0];
min=num[1];
for(i=2;i<=num[0];i++)
{
if(max<num[i])
{
max=num[i];
}else if(min>num[i])
{
min=num[i];
}
}
System.out.println(max+" "+min);
}
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。