Java入门2
一、Arrays工具类
1.数组地址的比较
int [] arr1={1,2,3,4,5};
int [] arr2={1,2,3,4,5};
System.out.println(arr1==arr2);//结果是false因为其比较的是地址数组不能用==判断
int [] arr1={1,2,3,4,5};
int [] arr2=arr1;
System.out.println(arr1==arr2);//结果是true因为arr1把地址赋给arr2
2.Arrays.equals(arr1,arr2);
接受两个数组,返回两个数据是否相等。比较的原理是,逐一比较两个数组的每一个值,是否相等。而如果使用==,是比较两个数组名中存储的地址,是否相等。
int [] arr1={1,2,3,4,5};
int [] arr2={1,2,3,4,5};
System.out.println(Arrays.equals(arr1, arr2));
3.Arrays.sort();
对数组进行升序排列,会直接修改原数组的内容。
int []a={1,5,6,2,3,10,8};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
4.Arrays.sort();
对数组的指定区域进行排序,左闭右开区间,包含起始下标,不含下标。
int []a={1,5,6,2,3,6,10,8};
Arrays.sort(a,3,6);
System.out.println(Arrays.toString(a));
5.Arrays.toString();
将数组转成字符串,转换之后的格式[1,2,3,4]。
6.Arrays.fill(a, 12);
将数组的每一项,都赋值给指定的数值。
int []a=new int[10];
Arrays.fill(a, 12);
System.out.println(Arrays.toString(a));
7.int []b=Arrays.copyOf(a, 10);
将a[]的指定个数,copy到一个新的数组;如果个数>a.length则新数组中多余的位置默认值补齐,如果个数<a.length则copy原数组的前半部分。
int a[]={1,2,3,4,5,6,7,8,9};
int []b=Arrays.copyOf(a, 5);
System.out.println(Arrays.toString(b));
8.Arrays.binarySearch(a,1);
查找数组中的指定元素,如果找到返回下标,否则返回负数,使用这个方法,必须是有序的数组,可以用Arrays.sort()进行排序。
int []a={0,2,2,3,4,5,6};
Arrays.sort(a);
System.out.println(Arrays.binarySearch(a,1));//相当于二分法需要排序后使用
9.二维数组的声明
int a[ ][ ] = new int[2][ ]; a[0] = new int[3]; a[1] = new int[5];
int [][]a={{1},
{1,2},
{1,2,3},
{1,2,3}};
for(int i=0;i<a.length;i++){//a.length=====>>>>a[i]
for(int j=0;j<a[i].length;j++)
{//a[i].length======>>>>a[i][j]
System.out.print(a[i][j]+"\t");//不用Arrays.toString
}
System.out.println();
}
二、String类
1.String类声明
/**
* [String类]位于java.lang包,java.lang是Java的语言包,使用时无须导包,自动导入,无import
* 2.拿到一个字符串对象
* (1)字面量声明String s="Hello World";
* (2)new关键字声明 String s1=new String("Hello World");
*/
String s="Hello World";
String s2=new String();
String s1=new String("Hello World");
System.err.println(s1);//err.红色的
2.String类的length()方法(字符串的长度)
/**
* s.length()返回字符串的长度,.length()是一个方法,使用时不能掉()
*/
System.out.println("请输入用户名:");
Scanner in=new Scanner(System.in);
String s=in.next();
if(s.length()<6){//带括号的是方法,不带括号的是属性
System.out.println("用户名最小为6位");
}
3.String类的equals()方法
/**
* 字符串不是引用数据类型
* s1.equals(s2)判断字符串是否相等
*
* .equals()的比对原理,是判断两个字符串的为一个字符是否相等。
* ==的比对原理,是判断两个字符串中存储的地址是否相等。
*/
String s1="123";
String s2="123";
String s3=new String("123");
String s4=new String("123");
System.out.println(s1==s2);//比地址
System.out.println(s1==s3);
System.out.println(s1==s4);
System.out.println(s2==s3);
System.out.println(s2==s4);
System.out.println(s4==s3);
System.out.println(s1.equals(s4));//比较内容
System.out.println(s1.equals(s2));
System.out.println(s1.equals(s3));
System.out.println(s2.equals(s3));
System.out.println(s2.equals(s4));
System.out.println(s3.equals(s4));
String s6=s1;//s1不会变
s6="456";
System.out.println(s1);
String s5=s3;//s3不会变
s6="456";
System.out.println(s3);
4.String类的equalsIgnoreCase()方法(忽略大小写的比较)
/**
* s.equalsIgnoreCase(s1)忽略大小写比对
*/
String s="JH";
String s1="jh";
System.out.println(s.equals(s1));
System.out.println(s.equalsIgnoreCase(s1));
//忽略大小写比对JH=jh
5.String类的toLowerCase()和toUpperCase()方法(将字符串转成大小写)
/**
* s.toLowerCase()将所有字符转换成小写
* s.toUpperCase()将所有字符转换成大写
*/
String s="JH";
String s1="jh";
System.out.println(s.equals(s1));
System.out.println(s.equalsIgnoreCase(s1));
//忽略大小写比对JH=jh
System.out.println(s.toLowerCase());
System.out.println(s.toUpperCase());
System.out.println(s.toLowerCase().equals(s1));
6.String类字符串的连接
/**
* 1.使用+
* 2.String s1=s.concat(s2);连接,将s1和s2连接,将s2连接到s1的后面,返回一个新字符串
*/ String s="哈哈";
String s1=s.concat("真帅");
System.out.println(s1);
7.String类的IndexOf()方法
/**
* .indexOf()在字符串中查找指定的字符或子串,并返回其下标,否则返回-1;
* 可以接受字符串,字符,整数类型的参数,如果传入整数,将根据ASXII码自动转为字符(A-65,a-97)
*
*
* .lastIndexOf()在字符串中查找指定的字符或子串最后一次出现的位置,并返回其下标,否则返回-1
*/
String s="abcdefffg";
System.out.println(s.indexOf("cde"));//
System.out.println(s.indexOf("cdf"));//-1不连续
System.out.println(s.indexOf(100));//a的阿斯科码值为97,3的为100
System.out.println(s.lastIndexOf("cdf"));
System.out.println(s.lastIndexOf("f"));
8.String类的substring()方法
/**
* substring()截取字符串的指定位置,返回一个新的子串
* (1)传入一个参数,表示起始下标,将从此下标开始,一直截到字符串以后
* (2)传入两个参数,表示起始下标和结束下标,为左闭右开,包含起始不含结尾
*/ String s="abcdefg";
System.out.println(s.substring(3));
System.out.println(s.substring(3,5));//左闭右开
9.String类的trim()方法
/**
*.trim()去掉字符串两端的空格
*/
String s=" abcdefg ";
System.out.println(s);
System.out.println(s.trim());
10.String类的replace()方法
/**
* replace将字符串中的指定区域,用新的字符串替换掉
*/
String s="abcdefg";
System.out.println(s.replace("abc","niu"));
11.String类的split()方法
/**
* .split()传入指定字符,将字符串分割为多个子串,返回一个字符串类型的数组;
* 如果传入一个空字符串,则将原字符的每一个字符进行分割
*
* .split( , )第二个参数,可以传入一个整数,表示将当前字符串分为几部分
* 如果传入的整数,小于原来分割的总部分,则剩余的
*/ String s="haha haha haha";
String [] a=s.split(" ");
System.out.println(Arrays.toString(a)); String []b=s.split("h", 3);
System.out.println(Arrays.toString(b));
12.String类的charAt()方法
/**
* charAT();用法
* * /
int j=0;
Scanner in=new Scanner(System.in);
String n=in.next();
char a=in.next().charAt(0);
for(int i=0;i<n.length();i++){
if(n.charAt(i)==a){
j++;
}
}
System.out.println(j);
三、StringBuffer类
1.StringBufferl类的声明
/**
* StringBuffer声明
* [StringBuffer类]
* 1.[StringBuffer是String的增强版,位于java.lang包中]
* 2.StringBuffer与String的最大区别在于:StringBuffer是可变可追加的
* 而String一旦声明不可改变,不能插入;
*/
StringBuffer sb=new StringBuffer("hahah");
2.StringBuffer类的toString()方法
/**
* .toString:将StringBuffer类型转换成String类,但在输出时,可以不用转换,
*将自动进行转换
*/
String s=sb.toString();
System.out.println(sb);
3.StringBuffer类的append()方法
/**
* .append()在原字符串的最后追加新的字符
* 原字符串会被直接改变,同时还会将追加之后的字符串返回
* append可以接受各种类型的参数,会自动转成字符串后追加到原字符串后
*/
StringBuffer sb1=sb.append("呵呵呵");
System.out.println(sb);
System.out.println(sb1); char []a={'a','b','c','d'};
StringBuffer sb2=sb.append(a,1,2);//(a,b,c)b是起始下标,c是几个
System.out.println(sb2);
4.StringBuffer类的删除方法
/**
* delete();传入两个下标,表示删除了这两个下标的字符,左闭右开区间
*
* .deletCharAt()传入一个下标,删除一个指定位置的字符
*/ StringBuffer sb=new StringBuffer("帅不帅你说了不算");//左闭右开区间
StringBuffer s =sb.delete(0, 2);
System.out.println(s); StringBuffer s1 =sb.deleteCharAt(2);
System.out.println(sb);
System.out.println(s1);
5.StringBuffer类的insert()插入方法
/**
* 在原字符串的指定下标位置,插入新的子串
* 新的字符串可以是任何数据类型,
*/
StringBuffer sb=new StringBuffer("帅不帅你说了不算");//左闭右开区间
StringBuffer s=sb.insert(3, "可能");
System.out.println(sb);
System.out.println(s);
四、面向对象
1.面向对象的解释以及使用类和对象的步骤
/**
* 面向对象&面向过程
* 0.面向机器语言:汇编语言。
* 1.面向过程:
* 面向过程专注于如何解决一个问题的过程。
* 编程特点:出现了一个个的函数,由一个个函数实现解决问题的一系列步骤。
* 2.面向对象:
* 面向对象专注于有谁(哪个)来解决问题,而调用者无需关注对象实现的细节。
* 编程特点:出现了一个个类,从类中拿到对象,通过对象直接解决问题。
* Java php C++ C# Python
*
*
* [类&对象]
* 1.类:具有一系列相同属性(特征)和方法(行为)的个体的集合,称为类。
* 类是一个抽象的概念,只能说类具有哪些属性,不能直接对属性进行赋值。
* 例如:人类由身高的属性,但是不能说人类的身高是180。
* 2.对象:从类中拿出具有具体属性值的个体,称为对象。
* 对象是从类中哪出的一个具体的个体,需要对属性进行具体的赋值。
* 例如:人类由身高的属性,那么说张三是人类中的一个个体,张三的身高是180,张三是人类中的一个对象。
* 3.类和对象的关系:
* 类是对象的抽象化(类有属性,但不能给类的属性赋值),对象是类的具体化。
* 类是对象的描述,对象是类的个体(对象是类的实例)。
* 程序中由类产生对象。
* 4.面向对象的三个特征:继承,封装,多态。
* 判断编程是不是面向对象,就要看符不符合继承,封装,多态。(js不能实现多态)
* 从类中new出一个对象,类的实例化。
*
*
* [使用类和对象的步骤]
*1.声明一个类:
* public class Person(){
* public String name;//属性
* public void say(){}//方法
*}
* 2.使用对象名.属性名或对象名.方法名,调用类中的属性和方法。
* p.say();//调用方法
* System.out.println(p.name);//调用属性
*/ String s=new String("哈哈哈");
//对象的实例化通过new关键字拿到一个类的对象,使用对象名.方法名,可以调用类中已经声明的方法
Person p=new Person("张三", 5); p.say();
System.out.println(p.name);
2.方法的返回值
如果方法有返回值,可以使用return返回结果;
如果方法没有返回值,需要设置返回值为void,而且方法中必须没有return;
有返回值的方法,调用时不一定必须接收返回值;
没有返回值的方法,调用时一定不能接收返回值;
public void sya(){
(无返回值)
}
public People say(int num.String name ){
return null;(有返回值)
}
3.方法的调用
/* *
* [方法的调用]
* 1.声明的方法,只有在调用的时候才能执行方法中的代码
* 2.方法的调用:
* 在本类的其他方法中调用:使用方法名();或者使用this.方法名();
* public void eat(){
* say();
* // this.say();
* }
*
* 调用其他类的方法:首先应该实例化拿到对象,在通过对象名调用方法
* JCMethod1 dm=new JCMethod1();
* // int num=dm.say();
* // System.out.println(num);
* // dm.eat();
* dm.eat();
*/
4.方法的参数
(1).声明方法时,也可以在()设置调用方法时需要传入的参数列表,多个参数之间用逗号隔开;
public void eat(String food,int i)
声明方法时的参数列表,称为形参列表;
(2).调用方法时,必须按照形参列表的要求,一一传入对应的参数;
dm.eat("鸡蛋灌饼",12);
调用方法时的参数列表,成为实参列表;
5.成员变量&局部变量
(1).成员变量:写在方法体外,直接在类中生命的属性,称为成员变量。
成员变量的作用范围:在整个类中使用。
(2).局部变量:在方法体里面声明的变量叫局部变量。
局部变量只在当前方法中有效,方法的形参列表,都属于局部变量。
(3).成员变量和局部变量的区别:
(1)作用于不同。
(2)初始值不同,java中成员变量默认初始值,局部变量没有默认初始值。
(3)优先级不同,就近原则,当成员变量和局部变量重名时,在方法中优先使用局部变量。
如果需要使用成员变量,需要使用this.进行使用。
public String name="zhangsan";//成员变量
public void eat(String food,int i){
String name;//局部变量
System.out.println("我叫"+this.name);
}
6.类的定义
(类名要用public修饰)声明一个类:
*[访问控制符]class 类名{}
*public class Person{}
*注意类名的命名规范
7.声明一个属性
/**
* 声明一个属性,[访问控制符]属性类型 属性名
*/
public String name;
public int age;
8.构造函数
/**
* 构造函数:是类中的一个特殊方法
* 1.构造函数与类同名
* 2.构造函数没有返回值,连void都没有
*
* 如果没有手动写构造函数,则系统会默认提供一个空参构造;
* 如果手动写构造函数,则系统不再提供空参构造。
*
* 构造函数无需我们手动调用,而是在实例化对象时,自动调用构造函数
* 构造函数的作用:在实例化对象的时候,给类的属性赋默认值
*/
public Person(String name,int age){
//使用this.属性表示使用本类的属性
this.name="默认名称";//name参数,this.name
this.age=0;
System.out.println("调用构造函数");
}
9.声明方法
/**
* 声明一个方法,[访问控制符] 返回值类型 方法名(){}
*
* 如果没有返回值,用void代替
*/
public void say(){
System.out.println("我是人类,我会说话。");
System.out.println(this.name+this.age); }
Java入门2的更多相关文章
- Java入门第一章
后天就是十一长假了,亲们准备好了去哪儿玩了吗? 今天有点空,就来聊聊Java吧,当然是一些Java入门知识了,网上有很多,这里我只是列举一些我自己学到的,感谢大家关注喵的博客这么久,也为大家带来点新知 ...
- [Java入门笔记] 面向对象编程基础(二):方法详解
什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...
- 第1章Java入门体验
第1章Java入门体验 1.java简介和平台应用 Java是sun公司开发出来,现在属于ORACLE公司java分为几个部分:首先是最基础的Java SE部分,这部分是Java的基础知识,主要包括: ...
- Java入门记(五):容器关系的梳理(下)——Map
注意:阅读本文及相关源码时,需要数据结构相关知识,包括:哈希表.链表.红黑树. Map是将键(key)映射到值(value)的对象.不同的映射不能包含相同的键:每个键最多只能映射到一个值.下图是常见M ...
- Java入门(二)——果然断更的都是要受惩罚的。。。
断更了一个多月,阅读量立马从100+跌落至10-,虽说不是很看重这个,毕竟只是当这个是自己的学习笔记,但有人看,有人评论,有人认同和批评的感觉还是很巴适的,尤其以前有过却又被剥夺的,惨兮兮的. 好好写 ...
- Android初涉及之Android Studio&JAVA入门--二月不能不写东西
是的,我还没有放弃写博客. 是的,我也没有放弃PHP的学习. 是的,我要开始学学最TM火的Android开发了. 你呢 1.Android Studio 一.概况 安装和配置什么的就不具体说了,网上一 ...
- JAVA手记 JAVA入门(安装+Dos下运行)
JAVA入门特供= =,今天设置环境变量后用dos运行的时候发现出现“找不到或无法加载主类”,索性查了些资料重新看了看JAVA入门的部分. 声明:我的笔记本暂时用的是Win10系统,Windows其他 ...
- Java入门教程总目录
Java入门教程总目录 持续更新中... 1.Java常识汇总 2.Java框架对比 3.Java技术路线 4.Java编码规范 5.Java环境变量配置 6.枚举 7.操作符 12.定时任务
- Java入门的程序汇总
Java入门的基础程序,虽然很简单,也要多练习,下面有重点的总结一下 1.HelloWorld这个不说了 2.常量与变量部分 基本数据类型使用 public class Javashujuleixin ...
- Java入门学习知识点汇总
Java入门重要知识点在这里总结一下,以方便日后复习,这部分内容主要有:变量和常量,常用的运算符,流程控制语句,数组,方法这些内容 一.变量和常量 1.Java关键字 先贴张图: 所有关键字区分大小写 ...
随机推荐
- CorelDraw X8 破解激活问题
在为X8使用特殊辅助手段激活时,通过菜单“帮助”-“产品详细信息”页中的“我有序列号”链接打开对话框,输入序列号激活. 然而,由于安装时要求联网登陆,很有可能获取了试用序列号,导致点击链接后,输入对话 ...
- 网站加速与Linux服务器防护
网站加速方面 1. Nginx 配置 gzip 压缩 开启nginx gzip压缩后,网页.css.js等静态资源的大小会大大的减少,从而可以节约大量的带宽,提高传输效率,给用户快的体验.虽然会消耗c ...
- xpath获取下一页,兄弟结点的妙用
第一页的情况: 第四页的情况 : 文章的链接: http://tech.huanqiu.com/science/2018-02/11605853_4.html 从上面我们可以看到,如果仅仅用xpat ...
- java1.8版本的HashMap源码剖析
一.摘要 以下分析内容均是基于JDK1.8产生的,同时也和JDK1.7版本的hashmap做了一些比较.在1.7版本中,HashMap的实现是基于数组+链表的形式,而在1.8版本中则引入了红黑树,但其 ...
- 云计算--网络原理与应用--20171122--STP与HSRP
简单了解STP 学习HSRP 实验 一. 简单学习STP STP(spanning tree protocol)生成树协议,就是把一个环形的结构改变成一个树形的结构.通过一些算法,在逻辑上阻塞一些端 ...
- TensorFlow实现Softmax Regression识别手写数字中"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败”问题
出现问题: 在使用TensorFlow实现MNIST手写数字识别时,出现"TimeoutError: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应 ...
- iOS开发UIKit框架-可视化编程-XIB
1. Interface Builder 可视化编程 1> 概述 GUI : 图形用户界面(Graphical User Interface, 简称GUI, 又称图形化界面) 是指采用图形方式显 ...
- Scrum 冲刺 第七日
Scrum 冲刺 第七日 站立式会议 燃尽图 今日任务安排 项目发布说明 站立式会议 返回目录 燃尽图 返回目录 今日任务安排 返回目录 项目发布说明 本版本的新功能 不只是简单打地鼠,还有一些不能打 ...
- Angular组件——组件生命周期(一)
组件声明周期以及angular的变化发现机制 红色方法只执行一次. 变更检测执行的绿色方法和和组件初始化阶段执行的绿色方法是一个方法. 总共9个方法. 每个钩子都是@angular/core库里定义的 ...
- 03-移动端开发教程-CSS3新特性(下)
1. CSS3动画 1.1 过渡的缺点 transition的优点在于简单易用,但是它有几个很大的局限. transition需要事件触发,所以没法在网页加载时自动发生. transition是一次性 ...