java基础学习笔记(三)

1、装箱和拆箱

所有基本类型都有对应的类类型,比如int对应的类是Integer,这种类就叫做封装类。数字封装类有Byte、Short、Integer、Long、Float、Double这些类都是抽象类Number的子类。封装类和基本类型之间可以相互转换,而基本类型自动转封装类型就叫装箱,反之则是拆箱,代码如下

        int i = 5;//基本类型转换成封装类型Integer it = new Integer(i);//自动转换就叫装箱,通过=符号Integer it2 = i;//Integer是Number的子类,所以打印trueSystem.out.println(it instanceof Number);//封装类型转换成基本类型int i2 = it.intValue();

 

2、字符串转换:数字转字符串:方法一使用String 类的静态方法valueOf(); 方法二是把基本类型装箱为封装类型,然后调用封装类类型的toString();

      int i = 5;String str = String.valueOf(i);//方法一使用封装类的valueOf方法Integer it = i;  //自动转换装箱String str2 = it.toString(); //调用字符串封装类的toString方法

 

 

3、数学方法:java.lang.Math提供了一些常用的数学运算方法,并且都是以静态方法的形式存在。如Math.round()是四省五入,Math.sqrt(9)是开平方,Math.pow(2,4)是2的4次方,Math.E是自然常数。

 

4、格式化输出:输出时如果变量过多时会用字符串拼接,拼接会显得繁琐,另一种解决方式是格式化输出,printf和format能够达到一模一样的效果,其中%s表示字符串,%d表示数字,%n表示换行。如下:

String sentenceFormat="%s 在进行了连续 %d 次击杀后,获得了 %s 的称号%n";
System.out.printf(sentenceFormat, "teemo", 5,"超神");
System.out.format(sentenceFormat, "teemo", 5,"超神");

 

5、Char基本类型对应的封装类型是Character,Character常用静态方法如下:

        System.out.println(Character.isLetter('a'));//判断是否为字母System.out.println(Character.isDigit('a')); //判断是否为数字System.out.println(Character.isWhitespace(' ')); //是否是空白System.out.println(Character.isUpperCase('a')); //是否是大写System.out.println(Character.isLowerCase('a')); //是否是小写System.out.println(Character.toUpperCase('a')); //转换为大写System.out.println(Character.toLowerCase('A')); //转换为小写String a = 'a'; //不能够直接把一个字符转换成字符串String a2 = Character.toString('a'); //转换为字符串

 

6、字符串使用:String 被修饰为final,所以不能被继承。String的成员变量是private final 的,所以String 是immutable的,表现像个常量。如String s=abc;s=123;字符串创建的内容并没有改变,s引用指向发生改变了,“abc”和“123”是两个字符串对象,在内存空间上占两个位置。

 

7、获取随机字符串的多种方法:

ASCII码对照表

方法1,思路是随机获取字母数字ASCII码数对应范围内的数,判断是否是字母或数字,循环获取5个满足要求的字符拼接成字符串

        char cs[] = new char[5];short start = '0';short end = 'z'+1;for (int i = 0; i < cs.length; i++) {while (true) {char c = (char) ((Math.random() * (end - start)) + start);if (Character.isLetter(c) || Character.isDigit(c)) {cs[i] = c;break;}}}String result = new String(cs);System.out.println(result);

方法2,思路是将所有数字、字母字符拼接成一个字符串,再随机获取字符

        String pool = "";for (short i = '0'; i <= '9'; i++) {pool+=(char)i;}for (short i = 'a'; i <= 'z'; i++) {pool+=(char)i;}for (short i = 'A'; i <= 'Z'; i++) {pool+=(char)i;}char cs2[] = new char[5];for (int i = 0; i < cs2.length; i++) {int index = (int) (Math.random()*pool.length());cs2[i] =  pool.charAt( index );}String result2 = new String(cs2);System.out.println(result2);

方法3:思路是在数字字母分块对应的ASCII码数值间获取随机数,循环多次获取随机数转换成字符拼接成字符串

public class TestNumber {public static void main(String[] args) {// TODO Auto-generated method stubchar[] chars = new char[5]; // 创建字符数组,每一个字符都将随机获取String str = ""; // 空字符串用来最后组合随机字符的for (int i = 0; i < chars.length; i++) {chars[i] = getRadomChar();str += chars[i];}System.out.println(str);}public static char getRadomChar() {int m1 = (int) (Math.random() * (90 - 65)) + 65;int m2 = (int) (Math.random() * (57 - 48)) + 48;int m3 = (int) (Math.random() * (122 - 97)) + 97;int[] m = { m1, m2, m3 };int index = (int) Math.floor((Math.random() * 3));char c = (char) m[index];System.out.println(c);return c;}}

其中

	public static void main(String[] args) {//获取拼接好的所有字符//在for循环中采用StringBuilder比用String的 `+=`高效;StringBuilder strPool_tmp = new StringBuilder();  for(short i='0';i<'z';i++) {if(Character.isLetter((char)i)||Character.isDigit((char)i)) {strPool_tmp.append((char)i);}}System.out.println(strPool_tmp.toString());}

 

8、穷举法(枚举法):

枚举法是在分析问题时,逐个列举出所有可能情况,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃,最后得出一般结论。主要利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。

    说白了,就是通过循环或者递归,把所有可能的情况过一遍,符合条件就留下,不符合继续找。

 

9、递归算法。递归的基本思想是把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了调用它自身的情况。递归是利用系统的堆栈保存函数当中的局部变量来解决问题的,因为函数调用的开销,递归常常会带来效率问题。

	//斐波拉契数列问题。找出数列中指定index位置的数值  1,1,2,3,5,8,13,21,34,55public static int getNum(int testNum) { if(testNum<3) {return 1;}else {return getNum(testNum-1)+getNum(testNum-2);}}

 

10、字符串方法:

charAt(int index)获取指定位置的字符;toCharArray()是将字符串转换为对应的字符数组;subString 截取子字符串;split 根据分隔符进行分隔生成字符串数组;trim 去掉首尾空格后返回新的字符串;toLowerCase 返回全部变成小写 ,toUpperCase 返回全部变成大写的字符串;indexOf 判断字符或者子字符串出现的位置;contains 是否包含子字符串;replaceAll 替换所有的 ,replaceFirst 只替换第一个;


public class TestString {public static void main(String[] args) {// TODO Auto-generated method stubString sentence = "盖伦,在进行了连续8次击杀后,获得了 超神 的称号";char c = sentence.charAt(0);System.out.println(c);  //输出 盖char[] cs = sentence.toCharArray(); //获取对应的字符数组System.out.println(sentence.length() == cs.length); //截取从第3个开始的字符串 (基0)//到5-1的位置的字符串//左闭右开String subString2 = sentence.substring(3,5);System.out.println(subString2);//根据,进行分割,得到3个子字符串String subSentences[] = sentence.split(",");for (String sub : subSentences) {System.out.println(sub);}System.out.println(sentence.indexOf('8')); //字符第一次出现的位置System.out.println(sentence.indexOf("超神")); //字符串第一次出现的位置System.out.println(sentence.lastIndexOf("了")); //字符串最后出现的位置System.out.println(sentence.indexOf(',',5)); //从位置5开始,出现的第一次,的位置 System.out.println(sentence.contains("击杀")); //是否包含字符串"击杀"String temp = sentence.replaceFirst(",","");//只替换第一个System.out.println(temp);}}

 

11、比较字符串:


public class TestString {public static void main(String[] args) {// TODO Auto-generated method stubString str="the light";  //编译器碰到字符串的字面值就会创建一个新对象String str2=new String();String str3="the light";  //当发现已经存在的字符串对象就不会重复创建System.out.println(str==str2); //falseSystem.out.println(str==str3); //trueSystem.out.println(str.equals(str2)); //false,完全一样则返回trueString str4=str3.toUpperCase();System.out.println(str.equalsIgnoreCase(str4)); //trueString start="th";String end="ight";System.out.println(str.startsWith(start));//true,是否以字符串开始或结束System.out.println(str.endsWith(end));}}

 

11、StringBuffer可变长的字符串,有以下方法

	public static void main(String[] args) {String str="the";StringBuffer sb=new StringBuffer(str);System.out.println(str.length());  //3,String内部是一个字符数组System.out.println(sb.capacity());  //19,内部也有一个字符数组,留有冗余数组,19这个空间大小,不同JDK不一样sb.append(" Man"); //追加sb.insert(7," IS BOY"); //插入sb.reverse(); //反转System.out.println(sb);
}

 

12、Date类:注意:是java.util.Date; 而非 java.sql.Date,此类是给数据库访问的时候使用的

时间原点概念:Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。

 

	public static void main(String[] args) {Date d1=new Date();   //创建日期对象System.out.println("当前日期时间是"+d1);// 从1970年1月1日 早上8点0分0秒 开始经历的毫秒数Date d2 = new Date(5000);System.out.println("从1970年1月1日 早上8点0分0秒 开始经历了5秒的时间");System.out.println(d2);//getTime()方法得到一个long型的整数System.out.println("从时间原点开始经历的毫秒数:"+d1.getTime());//new Date().getTime() 和 System.currentTimeMillis() 基本是一样的System.out.println("系统的当前毫秒数:"+System.currentTimeMillis());}

 

13、SimpleDateFormat 日期格式化类,有以下方法

	public static void main(String[] args) {//日期转字符串//y 代表年//M 代表月//d 代表日//H 代表24进制的小时//h 代表12进制的小时//m 代表分钟//s 代表秒//S 代表毫秒SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );Date d= new Date();String str = sdf.format(d);System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);//字符串转日期SimpleDateFormat sdf2 =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );String str2 = "2016/1/5 12:12:12";//需要进行异常处理try {Date d2 = sdf2.parse(str2);System.out.printf("字符串 %s 通过格式  yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str2,d2.toString());} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

14、日历对象,采用单例模式获取日历对象Calendar.getInstance();

    public static void main(String[] args) {Calendar c = Calendar.getInstance();Date now = c.getTime();// 当前日期System.out.println("当前日期:\t" + format(c.getTime()));// 下个月的今天c.setTime(now);c.add(Calendar.MONTH, 1);System.out.println("下个月的今天:\t" +format(c.getTime()));// 去年的今天c.setTime(now);c.add(Calendar.YEAR, -1);System.out.println("去年的今天:\t" +format(c.getTime()));// 上个月的第三天c.setTime(now);c.add(Calendar.MONTH, -1);c.set(Calendar.DATE, 3);System.out.println("上个月的第三天:\t" +format(c.getTime()));}

 

更多资源或实战项目详细可以了解:http://how2j.cn/k/interface-inheritance/interface-inheritance-practise/679.html?p=29570

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win7如何设置还原点

win7系统是微软经典的操作系统&#xff0c;有很多比较实用的功能&#xff0c;比如说win7系统还原点的功能。通过win7设置还原点&#xff0c;可以把win7系统还原到还原点状态达到修复系统的目的。那么win7如何设置还原点?下面小编教下大家win7设置还原点的方法。 win7如何设置…

小鱼一键重装系统win7教程

最近有朋友想要自己安装win7操作系统&#xff0c;却不知道如何才能正确安装。于是就叫了电脑师傅来帮忙安装&#xff0c;又花了一点小钱。电脑师傅三下两除二就安装好&#xff0c;朋友询问下&#xff0c;电脑师傅才说出来这个一键安装win7的方法。下面就让我们一起来看看win7怎…

名片设计尺寸及注意事项(详尽),附加:文字转曲线或外框字;网址、文字转二维码方法

附加&#xff1a; 文字如何转曲线或外框字&#xff1f;&#xff1f; "转曲"是在用Corl Draw(简称CD)或者Adobe Illustrator(简称AI)做图时对文字作的一项重要操作,因为如果不转曲的话在把文件拿到其它电脑上编辑时可能会因为缺少字体文件而不能正常显示文字!! 转曲…

从域名注册到网站上线全过程(简单全面)

前言&#xff1a;刚开始是计划个人注册免费域名和免费的虚拟主机&#xff0c;目的是不花钱的完成到上线的全过程&#xff0c;点亮这个网站上线的技能树。后面公司需要做一个简单的展示性网站就名正言顺的进行尝试实现了。 个人总结&#xff1a;上线流程简单可以细分为以下几步…

win7纯净版镜像系统安装教程

虽然win10发布有很多长时间了&#xff0c;但是目前依然无法动摇win7在市面上的地位&#xff0c;有的小伙伴在买了预装win10系统的电脑用过之后还是想装回win7系统&#xff0c;下面就来看看win7纯净版镜像系统安装教程吧。 win7纯净版镜像系统安装教程 1、首先我们打开电脑浏览…

AVI转MP4视频无损格式转码

前言&#xff1a;产品宣传需要无损avi转mp4转换格式 前期准备&#xff1a; 格式工厂 下载链接&#xff1a;https://pan.baidu.com/s/1WLD1ip9EaMdca_k2x7Zhvg 提取码&#xff1a;i4nx DIVX、AVC、HEVC三种压码格式的区别&#xff1a; DivX是早期的MPEG4视频压缩编码&…

谷歌浏览器如何使用访客模式 谷歌浏览器使用访客模式的方法

谷歌浏览器怎么使用访客模式?谷歌浏览器是一款强大的搜索引擎&#xff0c;谷歌浏览器的访客模式可以有效的保护自己电脑浏览器的信息安全&#xff0c;要怎么设置访客模式呢&#xff0c;下面就给大家分享具体步骤。 1、在Chrome浏览器地址栏输入&#xff1a;chrome://flags/#e…

vue-cli搭建和“Cannot find module npm-cli.js” 、“operation not permitted” 、 deprecated coffee-script等错误

前言&#xff1a;重装nodejs后&#xff0c; vue-cli搭建项目后运行vue项目报错报错 "npm Error: Cannot find module npm-cli.js" &#xff0c;同时发现npm -v 也报错。 分析: vue-cli脚手架模板是基于node下的npm来完成安装的&#xff0c;安装vue-cli也会先安装no…

谷歌浏览器怎么将迅雷设置为默认下载方式 谷歌浏览器设置迅雷为默认下载的教程

谷歌浏览器怎么将迅雷设置为默认下载方式?现在的浏览器有很多&#xff0c;谷歌浏览器就是其中的一种。想要将迅雷设置为谷歌浏览器的默认下载方式&#xff0c;具体该怎么操作?下面就是谷歌浏览器设置迅雷为默认下载的教程&#xff0c;一起来看一下。 1.安装谷歌浏览器后。在…

js属性对象的hasOwnProperty方法

IE 5.5、FireFox、Chrome、Safari、Opera等主流浏览器均支持该函数。 Object的hasOwnProperty()方法返回一个布尔值&#xff0c;判断对象是否包含特定的自身&#xff08;非继承&#xff09;属性。可以用于区分自身属性和继承属性&#xff0c;如下 function foo() {this.name …

chrome浏览器市场份额2018年1月占比上升至61.41%

最新消息&#xff1a;浏览器是互联网流量的重要入口&#xff0c;也是自古"兵家必争之地"&#xff0c;微软为了与谷歌Chrome一较高下&#xff0c;不惜放弃了成名已久的IE而启用Edge&#xff0c;那么结果如何呢? 根据今年1月份的统计数据显示&#xff0c;Chrome浏览器…

腾讯视频开启硬件加速

这篇文章主要说的是如何下载腾讯视频到电脑_腾讯视频开启硬件加速&#xff0c;希望可以帮助大家。腾讯视频开启硬件加速返回暂停重播播放x 当我们使用腾讯视频观看本地或在线影视时&#xff0c;开启硬件加速可以明显提高画面质量以及减少 CPU 的占用。 那么&#xff0c;怎样才…

websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室

websocket简介&#xff1a; WebSocket协议是 HTML5 开始提供的一种基于TCP的一种新的全双工通讯的网络通讯协议。它允许服务器主动发送信息给客户端。 和http协议的不同&#xff1f;&#xff1f; HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型…

搜狐视频怎么投屏

搜狐视频怎么投屏 1、设置投屏前&#xff0c;要先把电视机和手机连接同一个无线网络&#xff0c;这样才能投屏成功。 2、设置后手机和电视的网络后&#xff0c;点击打开手机桌面上的搜狐视频。 3、打开搜狐视频后&#xff0c;在打开的软件里面 &#xff0c;点击一个视频播放…

上位机和下位机的概念,理解如何实现PC从PLC中读取数据?

市面上的PLC有上百种&#xff0c; 西门子的&#xff0c; 三菱的&#xff0c; 欧姆龙的等等。 上位机和下位机的理解&#xff1a; 上位机是指可以直接发出操控命令的计算机&#xff0c;一般是PC/host computer/master computer/upper computer,屏幕上显示各种信号变化(液压&…

红队打靶练习:DIGITALWORLD.LOCAL: FALL

目录 信息收集 1、arp 2、netdiscover 3、nmap 4、nikto 5、whatweb 6、小结 目录探测 1、gobuster 2、dirsearch WEB 80端口 /test.php 文件包含漏洞 SSH登录 提权 get root and flag 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interfa…

笔记:区分文件头lang=”zh”和lang=”zh-cn”的使用??

单一的 zh 和 zh-CN 均属于废弃用法。zh现在不是语言code了&#xff0c;而是macrolang&#xff0c;能作为语言code的是cmn&#xff08;国语&#xff09;、yue&#xff08;粤语&#xff09;、wuu&#xff08;吴语&#xff09;等。 zh-CN 的问题还在于&#xff0c;其实多数情况下…

win7系统如何开启udma功能

我们的电脑使用一段时间之后&#xff0c;经常可以发现电脑磁盘的读写速度开始变慢了&#xff0c;这样会占用很多cpu资源去运行程序&#xff0c;其实我们可以开启udma功能就可以了&#xff0c;它能够加快磁盘的读写速度&#xff0c;来节省更多的cpu资源&#xff0c;那么win7系统…

Video在网页和移动端无法自动播放问题??

<video> 标签介绍 <video> 标签定义视频&#xff0c;比如电影片段或其他视频流。支持三种视频格式&#xff1a;MP4、WebM、Ogg。是H5的新标签&#xff0c;使用如下&#xff1a; //autoplay表示视频自动播放&#xff0c;controls表示显示视频控制器&#xff0c;lo…

vue全局安装jquery,vue使用bootstrap框架,vue中封装websocket通讯,vue引入element-ui 组件库,引入highcharts图表插件

vue安装jquery&#xff1a; 1、使用vue-cli创建好vue项目后&#xff0c;在项目文件夹下&#xff0c;使用命令npm install jquery --save-dev 引入jquery。 2、修改项目文件 build/webpack.base.conf.js&#xff0c;添加如下内容&#xff1a; var webpackrequire(webpack) mo…