程序员成长之路(Day 12)
目录
学习目标:
学习内容:
延伸:
final关键字:
修饰类:
修饰方法:
修饰变量:
修饰成员变量:
final变量和普通变量的区别:
String类的常用方法:
·public String toString()
·public char charAt(int index)
· public int compareTo(String anotherString)
·public boolean contains(CharSequence s)
·public boolean startsWith(String prefix)
·public boolean endsWith(String suffix)
·public boolean equals(Object anObject)
·public boolean equalsIgnoreCase(String anotherString)
·public byte[] getBytes()
·public int indexOf(String str)
·public int lastIndexOf(String str)
·public boolean isEmpty()
·public int length()
·public String replace(CharSequence target, CharSequence replacement)
·replaceFirst(CharSequence target, CharSequence replacement)
·public String[] split(String regex)
·public String substring(int beginIndex, int endIndex)
·public char[] toCharArray()
·public String toLowerCase()
·public String toUpperCase()
·public String trim()
LintCode刷题:
·bug修复之final关键字
· 打印Hello World
·打印三个对象的名字和编号信息
·计算1949年到n年中所有的闰年
· 获取去除空格后的字符串长度
·向课程表指定的列插入'FlashSale'课程信息
学习时间:
学习产出:
学习目标:
- 面向对象设计思想
- 面向对象的分析与设计
- Java与面向对象
- 类中成员变量的定义与意义
- 构造方法的定义和调用
- 面向对象的封装特性
- 局部变量和成员变量的作用域问题
- 静态属性、静态方法、静态代码块
- 面向对象的继承特性
- 继承中构造方法的细节
- 面向对象的多态特性
- 抽象方法与抽象类
- 接口
学习内容:
延伸:
final关键字:
表示最终的,不可变的。
修饰类:
final修饰一个类时,表明这个类不能被继承。
final class Father{}
class Son extends Father{ //编译报错,不能继承final修饰的类}
修饰方法:
final修饰方法,方法不可以重写,但是可以被子类访问 (前提:方法不是 private 类型)。
class Father{public final void speak(){System.out.println("爸爸:我是你爹");}
}
class Son extends Father{//直接编译失败,被final修饰的方法不能被重写
// public void speak(){
// System.out.println("熊孩子:我才是你爹");
// }
}public class FinalMethod {public static void main(String[] args) {Son son =new Son();son.speak(); //访问final修饰的方法}
}// 输出结果: 爸爸:我是你爹
修饰变量:
如果被final修饰的是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。
public class FinalVariable {public final int a=1;public void method(){// final修饰基本数据类型的变量,其数值一旦在初始化之后便不能更改a=2;// final修饰引用类型的变量,其初始化之后便不能再让其指向另一个对象final String str=new String();str=new String();}
}
修饰成员变量:
成员变量必须在定义时或者构造器中进行初始化赋值,如果在定义成员变量的时候不初始化,前提是在构造方法中将成员变量b进行初始化。
public class FinalVariable {public final int a=1;public void method(){// final修饰基本数据类型的变量,其数值一旦在初始化之后便不能更改a=2; //编译失败// final修饰引用类型的变量,其初始化之后便不能再让其指向另一个对象final String str=new String();str=new String();//编译失败}
}
final变量和普通变量的区别:
public class Solution {public static void main(String[] args) {String a = "hello2";final String b = "hello";String d = "hello";String c = b + '2';String e = d + "2";System.out.println((a == c)); //tureSystem.out.println((a == e)); //false}
}
由于变量b
被final修饰,因此会被当做编译器常量,所以在使用到b
的地方会直接将变量b
替换为它的值(这种情况我们成为编译器的优化)。而对于变量F
的访问却需要在运行时才能连接确定,所以返回false
注意:只有在编译期间能确切知道final变量值的情况下,编译器才会进行这样的优化,那是不是只要是被final修饰的变量就会进行优化呢?当然不是!比如下面的这段代码就不会进行优化:
public class Solution {public static void main(String[] args) {String a = "helloWord2";final String b = getHello(); //尽管是final修饰,但不会进行优化,因为它要运行时初始化才被确定String c = b + 2;System.out.println((a == c)); //false}public static String getHello() {return "helloWord";}
}
String类的常用方法:
·public String toString()
返回本身。
System.out.println("abc".toString()); //输出:abc
·public char charAt(int index)
用于查找字符串中下标为index的字符,返回一个字符。
System.out.println("student".charAt(0)); //输出:s
System.out.println("student".charAt(6)); //输出:t
· public int compareTo(String anotherString)
按照字典顺序比较两个字符串大小。返回0表示两个字符串的值相同。如果不相同,返回两个字符串 的 第一位不相同字符 的 ASCII之差。如果是包含关系的话,返回长度之差。
System.out.println("abc".compareTo("abc")); //输出:0
System.out.println("abcd".compareTo("abcg")); //输出:-3
System.out.println("abcf".compareTo("abcb")); //输出:4
System.out.println("ab".compareTo("abcc")); //输出:-2
System.out.println("ab".compareTo("abygdfg")); //输出:-5
System.out.println("abygdfg".compareTo("ab")); //输出:5
·public boolean contains(CharSequence s)
判断前面的字符串是否包含后面的字字符串。
System.out.println("hello World".contains("hello")); //输出:true
System.out.println("hello World".contains("hello!")); //输出:false
System.out.println("good".contains("goodjob")); //输出:false
·public boolean startsWith(String prefix)
判断当前字符串是否以prefix字符串开头。
·public boolean endsWith(String suffix)
判断当前字符串是否以suffix字符串开结尾。
System.out.println("hello world".startsWith("hel")); //输出:true
System.out.println("hello world".endsWith("world")); //输出:true
·public boolean equals(Object anObject)
判断当前字符串内容是否与后面字符串内容相同。
System.out.println("abc".equals("abc")); //输出:true
System.out.println("abc".equals("def")); //输出:false
·public boolean equalsIgnoreCase(String anotherString)
忽略大小写,判断当前字符串内容是否与后面字符串内容相同。
System.out.println("abC".equalsIgnoreCase("ABc")); //输出:true
·public byte[] getBytes()
将字符串转成byte[]数组。
byte[] bytes = "abcde".getBytes();
for (byte x : bytes) {System.out.print(x + " "); //输出:97 98 99 100 101
}
·public int indexOf(String str)
返回某个子字符串在当前字符串中第一次出现的下标,没有就返回-1。
·public int lastIndexOf(String str)
返回某个子字符串在当前字符串中最后一次出现的下标,没有就返回-1。
System.out.println("aaabbssddcdd".indexOf("dd")); //输出:7
System.out.println("aaabbssddcdd".lastIndexOf("dd")); //输出:10
·public boolean isEmpty()
判断某个字符串是否为空字符串,已经实例化了,也就是字符串的长度是否为0。
System.out.println("".isEmpty()); //输出:true
System.out.println("abc".isEmpty()); //输出:false
·public int length()
返回当前字符串的长度。
System.out.println("".length()); //输出:0
System.out.println("abcde".length()); //输出:5
·public String replace(CharSequence target, CharSequence replacement)
将当前字符串当中的所有target字符串换成replacement字符串。
·replaceFirst(CharSequence target, CharSequence replacement)
将当前字符串当中的第一个target字符串换成replacement字符串。
System.out.println("year/month/day".replace("/", ".")); //输出:year.month.day
System.out.println("http://www.baidu.com-http://".replaceFirst("http://", "https://")); //输出:https://www.baidu.com-http://
·public String[] split(String regex)
将当前字符串以regex字符串隔开,隔开后的片段以String[]形式返回。
String[] ymd = "2020-1-1".split("-");
for (String x: ymd) {System.out.print(x + " "); //输出:2020 1 1
}
·public String substring(int beginIndex, int endIndex)
在当前字符串中,从beginIndex开始截取,截取到endIndex的新字符串,返回新字符串。
String str1 = "abcdefgh".substring(3, 6);
System.out.println(str1); //输出:def
·public char[] toCharArray()
将字符串转换成char[]数组,并返回。
char[] chars = "student".toCharArray();
for (char c : chars) {System.out.print(c + " "); //s t u d e n t
}
·public String toLowerCase()
将字符串全都转换成小写字母。
·public String toUpperCase()
将字符串全都转换成大写字母。
System.out.println("ABcDeFG".toLowerCase()); //输出:abcdefg
System.out.println("abcDefG".toUpperCase()); //输出:ABCDEFG
·public String trim()
去除字符串前后的空格。
System.out.println(" hello world ".trim()); //输出:hello world
LintCode刷题:
·bug修复之final关键字
延伸->(final)
public class Solution {String a = "hello2";final String b = "hello";String d = "hello";String c = b + '2';String e = d + "2";
}
· 打印Hello World
第一个编写的程序 ,有点小后悔一开始为啥没好好学,不过现在也不算太迟
public class HelloWorld {public static void main(String[] args) {System.out.println("Hello World");}
}
·打印三个对象的名字和编号信息
创建子类使用父类方法的应用
Father(String name,int id){this.name=name;this.id=id;}Son(String name,int id){super(name,id);}
·计算1949年到n年中所有的闰年
知道判断闰年条件即可
public class Solution {public void leapYear(int year) {for (int i=1949;i<=year;i++){if (i%4==0&&i%100!=0||i%400==0){System.out.println(i);}}}
}
· 获取去除空格后的字符串长度
延伸->(String类常用的方法)
public class Solution {public int getLength(String str) {str=str.replace(" ","");return str.length();}
}
·向课程表指定的列插入'FlashSale'课程信息
延伸->SQL语句
insert into `courses` (`name`,`student_count`,`created_at`,`teacher_id`)
values("Flash Sale",100,'2018-01-01',5)
学习时间:
2021-8-20 9:00-11:45、13:30-17:00
学习产出:
刷题*6
学习笔记*1
程序员成长之路(Day 12)相关推荐
- 程序员成长之路(四)之有用的网址
2019独角兽企业重金招聘Python工程师标准>>> 通过Java来测试JSON和Protocol Buffer的传输文件大小 http://www.jb51.net/articl ...
- 程序员成长之路--软件架构
程序员成长之路--软件架构 一.想成为一个合格的架构师,你要知道软件架构是个什么概念,明白架构的定义: 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之 ...
- 原创电子书《菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师》
<菜鸟程序员成长之路:从技术小白到阿里巴巴Java工程师> 国庆节快乐!一年一度长度排第二的假期终于来了. 难得有十一长假,作者也想要休息几天啦. 不管你是选择出门玩,还是在公司加班,在学 ...
- JAVA程序员成长之路的总结
JAVA程序员成长之路的总结 看了篇推荐贴,JAVA程序员成长之路的总结,大致适用于各种初级JAVA程序员规划借鉴之用, 原文地址http://tieba.baidu.com/p/2017010306 ...
- 程序员成长之路(一)
最近 ,总感觉有点郁闷,工作原因! 我是一名程序员,但完全没有经历过过正统的的程序员之路,一直在自我摸索,迷茫了,总结一下,找到迷茫的原因,再继续, 直到现在,仍旧如此.有的人限于能力愿意,到了某个高 ...
- Java程序员谈一谈-----java程序员成长之路
转载:http://www.banzg.com/archives/679.html?ref=myread 阿里面试回来,想和Java程序员谈一谈 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力 ...
- 我的程序员成长之路——回顾自己三年的工作
本来不准备写年度总结的,但是恰逢今天北京同事年会,不禁回首,发现自己已经在程序员的职业道路上走了三年,也算初中毕业了,总的来说,自己勤勤恳恳,未曾懈怠,也感谢这三年在我工作和生活中出现的每一个人和每一 ...
- 一个电子发烧友的程序员成长之路
回想起高考已经是7年前的事情了,一直想在毕业之际记忆记录一下7年的历程,懒惰始终占据着我的整个身躯.看到这个征文活动,让我有点想提笔记录的冲动了. 1.邂逅 一直在想该用什么样的语言来将我对电子制作发 ...
- 一个JAVA程序员成长之路分享
我搞JAVA也有些日子了, 因为我比较贪玩,上进心不那么强, 总是逼不得已为了高薪跳槽才去学习, 所以也没混成什么大牛, 但好在现在也已经成家立业, 小日子过的还算滋润, 起码顶得住一月近万元的吃喝拉 ...
最新文章
- 全国大学生智能汽车竞赛介绍-2020
- Impala与Hive的比较
- 免费Opengrok-代码阅读工具:Kernel,Optee,ATF,Uboot...
- 图像降噪算法——图像噪声模型
- java callable 详解_Java多线程详解(七)------Callable接口介绍
- linux下的安装:openssl
- 小程序添加和删除新元素功能实例
- c语言中打印ipv6地址,c-来自任何有效地址的ipv4和ipv6
- 一杯水怎么测试_每滴都是“芯”鲜好水,碧然德新款净水器实测
- HDU2035 人见人爱A^B【快速模幂】
- pip更新升级后Import Error:cannot import name main及pip安装包后出现环境错误拒绝访问...
- 设计模式(14)——原型模式(Prototype)
- Tomcat常见内存溢出的解决方案
- 考研计算机专业课复试都有什么,2019计算机考研复试科目总结
- 31、当当图书榜单爬虫
- FrankMocap:A Monocular 3D Whole-Body Pose Estimation System via Regression and Integration 2021阅读理解
- 浏览器兼容性工具 Spoon Browser Sandbox
- 项目管理5阶段|一位高级项目经理的4年项目经验分享
- [转]网站整合Ucenter详细流程
- 记一次nginx配置自定义错误页面的麻瓜经历