JAVA面向对象编程学习 (1)语法基础与类与对象
读入函数
Scanner in=new Scanner(System.in);System.out.println(in.nextLine());
意思是先new一个Scanner类的对象叫in,然后调用in的方法nextLine(),含义应该是读取一个字符串然后返回到终端,终端的println函数接受到此字符串,然后打印到终端。
读取一个整形变量
int n=5;Scanner in= new Scanner(System.in);n=in.nextInt();System.out.println(n);
print和printlf的区别
print不会自动空行
而printlf会自动空行
定义数组的方式
定位二维数组也是这个格式,多了个中括号而已
import java.awt.*;
import java.util.Scanner;public class test
{public static void main(String[] args){int nums[]=new int[100];Scanner in= new Scanner(System.in);int n=in.nextInt();for(int i=0;i<n;i++){nums[i]=in.nextInt();}for(int i=0;i<n;i++){System.out.println(nums[i]);}}
}
逃逸字符
用来表达无法打印出来的控制字符或者特殊字符,它由一个反斜杠""开头,后面跟上另一个字符,这两个字符串合起来,组成了一个字符
反斜杠
System.out.println('\\');
退格符号
System.out.println("abc"+'\b'+"d");
制表符
System.out.println("abc"+'\t'+"d");
换行
System.out.println("abc"+'\n'+"d");
回车
System.out.println("abc"+'\r'+"d"+"\r");
字符串
创建字符串对象
String s=new String("a string");System.out.println(s);
创建对象的另外一种方式及其运算
String s="I am a string";String s1=",are you?";System.out.println(s+s1);
新的读入方式
1.in.next()读入一个单词,单词的标志是空格
String s="";Scanner in=new Scanner(System.in);//读入五个单词的句子for(int i=0;i<5;i++){s+=in.next();}System.out.println(s);
2.in.nextLine()读入一整行
比较两个字符串的方法
equal方法
String s="bye";System.out.println(s.equals("bye"));
用==是在比较是不是同一个字符串,用equal方法是在比较其内容是否一致。
String 大小的比较
String s1="嘉然今天吃什么";String s2="向晚大魔王";System.out.println(s1.compareTo(s2));//if res>0//s1>s2//if res==0//s1==s2//if res<0//s1<s2
访问字符串内的单个字符
s.charAt(index);
String s1="嘉然今天吃什么";String s2="向晚大魔王";System.out.println(s1.charAt(1));
得到子串
用法如:
String s1="嘉然今天吃什么";System.out.println(s1.substring((3)));//得到index为3一直到末尾的子串String s2="向晚大魔王";//index为2到index为3的子串System.out.println(s2.substring(2,3));
查找某一个字符是否存在
String s1="嘉然今天吃什么";System.out.println(s1.indexOf('然'));String s2="向晚大魔王";System.out.println(s1.indexOf('晚'));
如果查找成功,则返回该字符的index,如果查找失败(不存在),返回-1;
如果查找的字符多次出现:
String s1="然然";String s2="晚晚";System.out.println(s1.indexOf('然',1));
表示从index=1开始去找
s.startWith(substring) and s.endWith(substring),返回一个string,需要一个接收
这两个函数用来判断这个字符串是不是以输入的字符串为开头(结尾)的字符串
s.trim()把字符串两端的空格删掉,返回一个string,需要一个接收
s.replace(c1,c2)把字符串中c1全部换成c2,返回一个string,需要一个接收
toLowerCase or toUpperCase全部变成大写或者小写,返回一个string,需要一个接收
对象与类
二者的粗略认识
对象是实体,需要被创建,可以为我们做事情
类是规范,根据类的定义来创建对象
简单地来说,就是我们可以用类来定义某种"变量",这种“变量”有他们共通的特点,都有共通的方法,而对象就是符合这个类的定义的一个实际上的“变量”,我们可以拿到它,拿它来做事情,是一个实实在在的东西。
对象=属性+服务
数据:属性或者状态
操作:函数
封装
把数据和对数据的操作放在一起->封装
定义一个类
一个类由两种东西组成:表示对象有什么的成员变量和表示对象能做什么的成员函数。
一旦定义了类,我们就可以创建这个类的多个对象,这些对象都会做那个类所定义的动作(函数),但是各自具有不同的数据。
public class Helloworld
{int a,b;void add(int a,int b){System.out.println(a+b);}public static void main(String argvs[]){Helloworld h=new Helloworld();int a=2,b=3;h.add(a,b);}
}
定义的h是一个Object类型的变量,它是这个对象的管理者,可以对对象内已经定义的方法进行调用。
成员变量和成员函数
在没有引入类之前,变量是跟着代码走的。代码写到哪儿,变量写在哪里,那么运行的时候变量就在那儿。现在,写在类里的成员变量,只是一个声明,变量并不在那里,变量不在类里,变量在每一个对象里。
成员变量
类定义了对象中所具有的变量,这些变量称之为成员变量
每个对象有自己的变量,和同一个类的其他变量是分开的
在函数中可以直接写成员变量的名字来访问成员变量
this
关于this,this是成员函数的一个特殊的固有的本地变量,它表达了调用这个函数的那个对象
对象的初始化
变量的初始化是程序安全很重要的一环。一旦创建了一个对象,有什么手段可以保证其中的每一个成员变量都有确定的初始值呢?
Java提供了多种手段来保障对象创建时的初始化,包括给每个成员变量默认的“0”值、定义初始化和构造函数。
构造函数
示例代码如下:
public class Helloworld
{int a=2,b=5;Helloworld()//构造函数{this.a=9;}void add(int a,int b){System.out.println(this.a+this.b);}public static void main(String argvs[]){Helloworld h=new Helloworld();int a=2,b=3;h.add(a,b);}
}
程序分析:在new helloworld这个对象的过程中,它这个过程会先跳到这个函数头,但是不执行,先去进行正常的对象构造,对里面的变量等进行一个初始化,进行一次正常对象的创建,然后回去调用Helloworld这个函数,由于这种函数对于对象的构建有决定性意义,因此成为构造函数。
同时需要注意的是,构造函数可以有种多种构造
public class Helloworld
{int a=2,b=5;Helloworld()//构造函数{this.a=9;}Helloworld(int temp){this.a=temp;}void add(int a,int b){System.out.println(this.a+this.b);}public static void main(String argvs[]){Helloworld h1=new Helloworld();Helloworld h2=new Helloworld(10);int a=2,b=3;h1.add(a,b);h2.add(a,b);}}
他会根据你传入的传输,自动识别你想要哪种构造方式
函数重载
一个类可以有多种构造函数,只要它们的参数表不同就可以
创建对象时给出不同的参数值,就会自动调用不同的构造函数
通过this()还可以调用其他构造函数
一个类里的同名但参数表不同的函数构成了重载关系
作业题
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);Fraction a = new Fraction(in.nextInt(), in.nextInt());Fraction b = new Fraction(in.nextInt(),in.nextInt());a.print();b.print();a.plus(b).print();a.multiply(b).plus(new Fraction(5,6)).print();a.print();b.print();in.close();}
}/*
double toDouble();将分数转换为doubleFraction plus(Fraction r);将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。Fraction multiply(Fraction r);将自己的分数和r的分数相乘,产生一个新的Fraction的对象。void print();将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。注意,在创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。你写的类要和以下的代码放在一起,并请勿修改这个代码:*/class Fraction
{int a,b;Fraction(int a,int b){this.a=a;this.b=b;}double toDouble()//将分数转换为double{return (this.a/this.b);}Fraction plus(Fraction r)//将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。{//传进来一个对象,然后输出一个对象/*5 2 5*3+2*6()- + - = -6 3 18*/int resa=0,resb=0;resa=this.a*r.b+r.a*this.b;//分子resb=this.b*r.b;//分母//然后得到gcdint m=this.gcd(resa,resb);resa/=m;resb/=m;Fraction res=new Fraction(resa,resb);return res;}Fraction multiply(Fraction r){int resa=this.a*r.a,resb=this.b*r.b;int m=this.gcd(resa,resb);resa/=m;resb/=m;Fraction res=new Fraction(resa,resb);return res;}void print(){if(this.a==this.b){System.out.println(1);return ;}int m=this.gcd(this.a,this.b);this.a/=m;this.b/=m;System.out.println(this.a+"/"+this.b);}int gcd(int a,int b){int resa=0,resb=0;resa=Math.max(a,b);//默认a较大resb=Math.min(a,b);//默认b较小int temp=resa%resb;while(temp!=0){resa=resb;resb=temp;temp=resa%resb;}return resb;}
}
JAVA面向对象编程学习 (1)语法基础与类与对象相关推荐
- 如何讲清楚 Java 面向对象的问题与知识?(类与对象,封装,继承,多态,接口,内部类...)
二 Java面向对象 类和对象 1.1 什么是面向过程?什么又是面向对象? 面向过程--步骤化 面向过程就是分析出实现需求所需要的步骤,通过函数(方法)一步一步实现这些步骤,接着依次调用即可 面向对象 ...
- 面向对象编程思想概览(一)类和对象
一.简介 生活中有许多技巧值得我们在程序设计中模仿和借鉴.采用类的思想可以方便地把具有相同属性和方法归为一类,从而简化编程.本讲利用生活的常见示例,浅显通俗的语言,生动地介绍了面向对象编程中类与对象的 ...
- Java面向对象编程学习
1.新建一个工程,在工程下新建一个类Method01(勾选创建main函数) package ClassStudy;class Person {String name; //默认为nullint ag ...
- 5.Java面向对象编程
文章目录 05 Java面向对象编程 1. 面向过程与面向对象比较 2. 类和对象 2.1 对象的属性和方法 2.2 类的属性和方法 2.3 定义一个类 2.4 创建和使用对象 2.5 对象和类的总结 ...
- 【关于JAVA面向对象的学习】
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.面向过程与面向对象 二.面向对象 1.面向对象编程 2,面向对象编程的三大特性 a,封装 b,继承 (1)obje ...
- 我们程序员眼中的对象-看完华华的文章妈妈再也不担心我找不到对象了-Java面向对象编程思想理解系列(1)
大家好!!!我叫霜华,是一个帅到没天理 骚里骚气,热爱人生与绿色 是一个不像程序员的程序员 作为一个在java这门领域沉迷一年半的人,如今在技术栈广度和深度 还是业务能力在客观层面讲确实进步迅速 (可 ...
- java实验Java面向对象编程_Java实验项目 面向对象编程.doc
Java实验项目 面向对象编程 Java实验项目二 面向对象编程 第1部分 类与对象 [实验目的] 熟悉Java面向对象程序设计的基本思想. 掌握类与对象的定义及使用方法. 掌握package语句与i ...
- java面向对象编程基础
java面向对象编程基础 前言:什么是java 是咖啡飘香的清晨 - 是斯坦福校园意浓情深 - 是James的思想睿智 是剁手党双十一挥舞的利刃 是大数据云计算驰骋的平台 - 是ATM上吐出的钞票 - ...
- Java面向对象编程(第2版)_学习记录
<Java面向对象编程(第2版)> 孙卫琴 编著 文章目录 一.介绍 (一)平台与开发环境 (二)一些知识 (三)数组 二.类的生命周期 (一)类的加载 1. 加载 2. 连接 3. 初始 ...
最新文章
- linux 进程数量限制,LINUX下每进程限制线程数量
- 微信公众平台的服务号和订阅号
- 社交中的黄金法则,你要细细体会品味
- defender 报备_去体育中心游泳碰上竞训怎么办?酒店承接会议业务需要报备吗?部门这样说...
- dbms_java 包不存在_Oracle的sql开发之包技术实战
- 局域网arp攻击_图解ARP协议(二)ARP攻击原理与实践
- JinKo 多路温度测试仪使用说明
- 全网最全python爬虫精进
- position:sticky新特性
- 对象(创建对象、构造函数)
- js运动(一)—— sidebar(分享到)
- 单人被罩标准的尺寸是多少
- wps浏览器插件(wps online) webwps
- conda创建指定python版本environment
- 史上最贱的数学悖论:A cup竟比C cup大?!
- 网站集健康检查(health Check)
- 6.5万游客昨日赴北京香山赏红叶-香山-红叶节-游客
- 电磁学中一些基础知识2
- BRIGHTCOVE推出面向营销人员的BRIGHTCOVE营销工作室,以提高知名度和营收
- InternImage 论文笔记