经常用到的小细节
来源:互联网 发布:拍照搜题软件 编辑:程序博客网 时间:2024/04/28 21:37
String a="codingke" 会在堆里的字符串常量池中查找看有没有这个字符串
该方式可能不需要创建对象(如果常量池中已经存在的话,就不需要再创建了)
最多创建一个。
String a= new String(“codingke”)会强制性的在堆内存里边重新开辟一个空间,
如果常量池里边有的话,会创建出一个常量。
如果常量池中没有的话,则需要创建两个。
2、&&和&的区别
a>5&&a<7 (性能更高)
先判断左边是不是成立。如果不成立,返回false。如果成立,在判断右边。如果右边不成立,返回false,如果成立,再判断两边成立不成立。
if(a>5){
if(a<7){
ture;
} else{
false;
false;
}
a>5&a<7 (性能不高)
先判断左边成立不成立,再判断右边成立不成立,再判断一起成立不成立。
3、Static关键字
1、使用static修饰一个属性(声明为static的变量实质上就是全局变量)
2、使用static修饰一个方法(通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法)
3、使用static修饰一个类
(1) 静态变量或方法,属于类而不属于对象,所以调用静态变量或方法时、应该使用类名直接调用,而不是使用对象去调用
(2)静态变量在内存中只会保留一份,由这个类共享。
(3)静态数据(变量和方法)在第一次使用时即载入内容,直接到程序退出,会一直在内存中,生命周期比较长。
(4 )静态方法不能 调用非静态数据,因为静态数据依赖于类,而不是对象。
总的来说,”==”是用来比较字符串的引用地址,而equals()才是比较字符串的值。两个值相同的字符串用”==”比较结果有可能是false,而用equals()则一定为true。除非两个字符串是同一个new出来的对象,不然比较字符串值是否相同应该要用equals()。
2、对那些安全敏感的信息,为什么用char[]存储要优于String?
String是不可变的,这就意味着它一旦被创建,就将永久驻留在内存中,直到垃圾回收器将其回收为止。然而用数组存储方式,你可以明确地改变数组中的元素,因此用数组方式,安全信息将有可能不存在系统内存的任何地方。
3、能否用字符串来声明switch语句?
JAVA 7及以后的版本是支持的。在JDK 7中,允许你使用字符串做switch语句的比较条件。jdk 6以前的版本,不能这样使用:
// java 7 only!
switch (str.toLowerCase()) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}
4、如何将字符串转换成数字int类型?
int n = Integer.parseInt("10");
很简单,但却会经常用到,也很容易被忽略。
5、如何用空格字符来分割字符串?
我们可以很方便地用正则表达式来分割字符串,”s”表示空格字符,比如” “, “t”, “r”, “n”
String[] strArray = aString.split("s+");
在jdk 6中,substring()方法在原来字符串中提供了一个截取字符的窗口,它并没有创建一个新的String实例。如果你想创建新的字符数组,你可以在substring()后加一个空字符,就像这样:
str.substring(m, n) + ""
这样就会创建一个新的String实例,上面的方法有时候可以让你的程序运行速度更快,因为垃圾回收器可以将没用的大字符串回收走,并保留其子字符串。
7、String、StringBuilder和StringBuffer哪个更优?
String和StringBuilder:StringBuilder是可变的,也就是说用StringBuilder创建的字符串你可以随时改变它。StringBuilder和StringBuffer:StringBuffer是同步的,它是线程安全(thread-safe)的,但效率要比StringBuilder差得多。
8、如何重复输出字符串?
在Python中,我们只需要为字符串乘上一个数字就可以重复输出该字符串了。然而在Java中,我们可以用StringUtils的repeat()方法来实现,StringUtils是Apache公共语言库的其中一个类库成员。
String str = "abcd";
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd
9、如何将字符串转换成日期类型?
你可以按以下方法来做,代码如下:
String str = "Sep 17, 2013";
Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);
System.out.println(date);
//Tue Sep 17 00:00:00 EDT 2013
10、如何统计指定字符在字符串中出现的频率
同样我们利用了Apache公共语言库中的StringUtils,代码如下:
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
11、截取字符串:
s=s.substring(int begin);截取掉s从首字母起长度为begin的字符串,将剩余字符串赋值给s;
s=s.substring(int begin,int end);截取s中从begin开始至end结束时的字符串,并将其赋值给s;
12、字符串中是否包含另一个字符串:
String s="abcdefg";
s.contains("g");
13、获取屏幕尺寸
15、android:gravity="top"设置光标在左上角
16、android:cursorVisible设定光标为显示/隐藏,默认显示。
17、android:digits设置允许输入哪些字符。如“1234567890.+-*/% ()”
18、获取当前时间:
Date curDate = new Date(System.currentTimeMillis());//获取当前时间
String str= formatter.format(curDate);
20、android:drawableLeft在text的左边输出一个drawable,如图片。
21、editText.setInputType(InputType.TYPE_CLASS_NUMBER); //输入类型
editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)}); //最大输入长度
editText.setTransformationMethod(PasswordTransformationMethod.getInstance()); //设置为密码输入框
22、
/**
* 验证手机格式
*/
public static boolean isMobileNO(String mobiles) {
/*
* 移动:134、135、136、137、138、139、150、151、157(TD)、158、159、187、188
* 联通:130、131、132、152、155、156、185、186 电信:133、153、180、189、(1349卫通)
* 总结起来就是第一位必定为1,第二位必定为3或5或8,其他位置的可以为0-9
*/
String telRegex = "[1][3578]\\d{9}";// "[1]"代表第1位为数字1,"[358]"代表第二位可以为3、5、8中的一个,"\\d{9}"代表后面是可以是0~9的数字,有9位。
if (TextUtils.isEmpty(mobiles))
return false;
else
return mobiles.matches(telRegex);
}
23、
/**
* 验证邮箱格式
* @param email
* @return
*/
public static boolean isEmail(String email) {
String str = "^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
Pattern p = Pattern.compile(str);
Matcher m = p.matcher(email);
return m.matches();
}
24、判断fragment是不是显示
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
//判断该Fragment时候已经正在前台显示 通过这两个判断,就可以知道什么时候去加载数据了
if (isVisibleToUser && isVisible()) {
initdata();
}
super.setUserVisibleHint(isVisibleToUser);
}
- 经常用到的小细节
- iOS开发中经常用到的细节
- 一些经常用到的java小技术
- C++ vector 经常用到的小知识
- [转]Asp.Net中经常用到的一些小技巧
- android ListView开发经常用到的小知识点
- 经常用到的小技巧(不定期更新)
- 工作中经常用到的C#编程小技巧
- android ListView开发经常用到的小知识点
- java中一些经常用到的小方法
- 经常用到的SQL
- 经常用到的DML
- CSS 经常用到的
- 经常用到的网址
- 经常用到的sql
- 经常用到的命令
- 经常用到的方法
- 经常用到的快捷键
- 从零开始学贪心算法
- 修改注册表让 VS2010 不生成 ipch 和 sdf
- glBindFramebuffer() 离屏渲染+双缓存+读取opengl像素 glReadPixels()
- CSS使用技巧
- 图结构练习——最短路径(sdut_2143)
- 经常用到的小细节
- C++ Primer 学习笔记_58_满载操作符与转换 -重载操作符的定义
- OpenCV 视频监控(Video Surveilance)的算法体系
- C++ Primer 学习笔记_59_满载操作符与转换 -输入/输出、算术/关系操作符
- C++第五次作业
- C++ Primer 学习笔记_60_满载操作符与转换 -赋值、下标、成员访问操作符
- 断言---java
- vi 快捷键
- C++ Primer 学习笔记_61_满载操作符与转换 -自增/自减操作符