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,一经查实,立即删除!

相关文章

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

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

AVI转MP4视频无损格式转码

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

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…

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

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

红队打靶练习: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…

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…

flex弹性布局笔记

学习自菜鸟教程的flex布局笔记 布局的传统解决方案&#xff0c;基于盒装模型&#xff0c;依赖 display 属性 position 属性 float 属性。它对于那些特殊布局非常不方便&#xff0c;比如&#xff0c;垂直居中就不容易实现。 简介&#xff1a; W3C提出了一种新的方案—-Flex布…

css宽高自适应布局,实现Sticky Footer的三种布局方式

宽度自适应布局&#xff1a; 1、使用场景&#xff1a; 一侧&#xff08;左侧或者右侧&#xff09;为固定的导航或者菜单栏&#xff0c;另一侧将会随着浏览器的缩放而自适应改变其大小。这种布局结构可用于顶层布局结构亦可用于某个局部功能块&#xff0c;常见于各种web系统&am…

vue学习:事件传递(冒泡和捕获),事件委托,jquery中的事件委托,$event 获取元素,vue事件修饰符

事件传递 ----冒泡和捕获 DOM事件标准定义了两种事件流&#xff0c;这两种事件流分别是捕获和冒泡。 和许多Web技 术一样&#xff0c;在它们成为标准之前&#xff0c;Netscape和微软各自不同地实现了它们。Netscape选择实现了捕获事件流&#xff0c;微软则实现了冒泡事件流。…

vue中路径的配置使用

绝对路径使用&#xff1a; 在项目中build文件夹下的webpack.base.conf.js的 使用如下&#xff1a; import mock from /mock/mock.js; html 相对路径使用 1. 当需要引用 同一目录下的文件&#xff0c;直接输入文档, 如下 <img src”bg.jpg” /> 2、当需要引用下一级目录…

常用MIME类型,解决IIS布署后字体文件、mp4视频文件等not found 的错误

前言&#xff1a;项目在本地运行正常&#xff0c;但部署在IIS服务器后使用浏览器访问项目会报&#xff1a;404 not found 错误&#xff0c;包括mp4视频文件和woff文件找不到。。如下 原因&#xff1a;在IIS中没有将 .mp4和 .woff 后缀的相应的MIME类型&#xff0c;使得 .mp4等格…

浏览器兼容video视频播放的多种方法

前言&#xff1a; 在 HTML 中播放视频并不容易&#xff01;因为直到现在&#xff0c;仍然不存在一项旨在网页上显示视频的标准。今天&#xff0c;大多数视频是通过插件&#xff08;比如 Flash&#xff09;来显示的。然而&#xff0c;并非所有浏览器都拥有同样的插件。 比如win…

pdf文件加密解密,pdf忘记密码解密的办法

1、pdf文件加密 步骤&#xff1a;wps》菜单“保护”》文档加密&#xff0c;设置编辑及页面密码&#xff0c;如下 2、pdf解密 在解密窗口取消选择“设置编辑及页面密码”&#xff0c;如下 注意&#xff1a;当忘记pdf密码时&#xff0c;可以使用pdf解密软件解密&#xff0c;如下…

伪类::selection自定义文本选中时的样式(CSS3样式),CSS3的word-break单次换行

1、::selection CSS3伪类自定义文本选中时的样式 有的人在浏览网页时&#xff0c;喜欢一边选中文本一边阅读。在windows环境下&#xff0c;正常的文本选中应该是深蓝色背景白色文本的样式。那么想要修改文本选中样式&#xff0c;可以通过css中有这样的一个伪类::selection用于自…

修改elementUI组件样式无效的多种解决方式

前言&#xff1a;vueelementUI项目开发中&#xff0c;经常遇到修改elementUI组件样式无效的问题&#xff0c; 原因&#xff1a;在vue组件中我们经常需要给style添加scoped来使得当前样式只作用于当前组件的节点。添加scoped之后&#xff0c;工作原理是将当前组件的节点添加一个…

CSS3 @media媒体查询 适配不同尺寸设备的响应式布局(清晰详解)

随着宽屏的不断普及&#xff0c;CSS3出现了media媒体查询技术 一、了解Media 相关知识 1、了解Media Queries Media Queries能在不同的条件下使用不同的样式&#xff0c;使页面在不同在终端设备下达到不同的渲染效果。其原理就是允许添加表达式用以媒体查询&#xff08;包括媒…

windows下mysql8.0-64的安装、完全卸载及注意事项(亲测),MySQL和SQL Server的简单区别

Windows 上安装 MySQL 1、现在zip安装包&#xff1a; 点击链接 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.11-winx64.zip 下载 zip 包。最新版本可以在 MySQL 下载 中下载中查看。 点击 Download 按钮进入下载页面&#xff0c;点击下图中的 No thanks, just star…

ChatGPT/GPT4+AI绘图+论文写作+编程结合到底有多强大?带你详细了解

ChatGPT在论文写作与编程方面具备强大的能力。无论是进行代码生成、错误调试还是解决编程难题&#xff0c;ChatGPT都能为您提供实用且高质量的建议和指导&#xff0c;提高编程效率和准确性。此外&#xff0c;ChatGPT是一位出色的合作伙伴&#xff0c;可以为您提供论文写作的支持…

vue-cli项目布署问题解决:空白页、静态资源文件404错误、refrenceError:promise未定义(部分浏览器不支持ES6语法)

&#xff08;前言&#xff1a;文章记录vue-cli项目打包使用IIS布署遇到的几个错误及解决方式&#xff09; 首先简单理解webpack打包&#xff1a; 个人理解&#xff1a;项目开发中我们构建 "低耦合高内聚" 的组件/模块来代码重用、降低项目复杂性&#xff0c;提升开发…

简单地使用webpack进行打包,一些常见打包错误

本质上&#xff0c;webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时&#xff0c;它会递归地构建一个依赖关系图(dependency graph)&#xff0c;其中包含应用程序需要的每个模块&#xff0c;然后将所有这些模块打包成一个或…