欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 Java自学笔记4

程序员文章站 2022-05-07 18:13:51
第十三章 静态方法我们发现,方法有两类:一种方法与类的关系不大。随便拷贝到别的类里也仍然可以运行,没有语法错误。而另一种方法与类关系密切。如果拷贝到别的类里就失去意义,有语法错误。一、静态方法(全局方法):1、特征:1 该方法拷贝到哪个类里都行2 该方法与这个类没有特别的关系。既没有访问this的属性,也没有访问this的方法,是一种特殊的方法。(该方法有没有访问this对象)2、在Java语言里,静态方法用static修饰。public class Example{// 判断n是否为...

第十三章 静态方法

我们发现,方法有两类:
一种方法与类的关系不大。随便拷贝到别的类里也仍然可以运行,没有语法错误。而另一种方法与类关系密切。如果拷贝到别的类里就失去意义,有语法错误。

一、静态方法(全局方法):

1、特征:

1 该方法拷贝到哪个类里都行
2 该方法与这个类没有特别的关系。既没有访问this的属性,也没有访问this的方法,是一种特殊的方法。(该方法有没有访问this对象

2、在Java语言里,静态方法用static修饰。

public class Example
{
	// 判断n是否为质数; true,是质数; false, 不是质数
	public static boolean isPrime( int n )
	{
		for(int i=2; i<n ; i++)
		{
			if( n % i == 0)
			{
				return false;
			}
		}		
		return true;
	}
}

3、调用静态方法时,不需要先创建对象。直接用类名调用该方法。

public class HelloWorld
{
	public static void main(String[] args)
	{		
		boolean result = Example.isPrime( 123 );
	}
}

注意:新手在第一年里尽量不要使用static,它会影响对“面向对象”的掌握 !!!

二、Math类

初学者最好请不要自己使用 static !但是别人定义好的静态方法,我们是要会使用的。而Math类有很多数据计算相关的静态方法,和String类似,Math也是Java语言自带的类

1、Math类的部分静态方法

abs(a) : 求a的绝对值
pow(a,b) : 求a的b次幂
sqrt (a) : 求a的平方根
round(a): 四舍五入
sin/cos/tan : 正弦, 余弦, 正切

2、我们以已知直角三角形的2条直接边a和b,求斜边长度为例来演示具体用法:

double a = 3;
double b = 4;		
double c = Math.sqrt( a * a + b*b );		
System.out.println("结果: " + c);

其中,Math.sqrt() 就是一个静态方法,直接调用这个方法,即不需要先new一个Math对象。
如果写成下面这样的,反而是有问题的,

Math m = new Math();
double c = m.sqrt ( a *a + b  * b );

这样写 Eclipse 会给你一个灯泡警告。

三、程序的入口

1、定义

入口 Entry of Program : 指程序运行的起点,只有main方法可以作为程序的入口。

2、用法

在运行 Java 程序时,需要有一个main() 方法

public class HelloWorld
{	
	public static void main(String[] args)
	{	
		System.out.println("Hello,World");
	}
}

既然是static的,所以该方法独立于该类,可以放到别的类下。

3、main方法的形式是固定的,不能改变。

以下写法都不能作为程序入口:
public static void main() // 必须带String[]参数
public static int main(String[] args) // 返回值必须为int
public void main(String[] args) //必须是public static

4、写好一个类后,可以直接在该类里添加一个main方法,对该类的功能进行测试。

Java允许多个main方法,程序启动时需要指定哪一个main作为入口。在有man方法的Java类里,右键,可以看到 Run As | Java Application菜单。如果一个类里没有main方法,右键就看不到这个菜单


第十四章 常用工具类(干货满满!)

一、字符串

1. 字符串拼接

使用加号可以直接拼接字符串。
示例:
String s = “世界” + “你好”;

2、字符串长度(重点)

String s = "世界nihao";
int n = s.length();

注意:
中文字符和英文字符都只占1个字符

3. 空字符串:长度为0的字符串

String s = "";
int n = s.length();

注意:
空字符串和null是两回事。空字符串是一个正常的字符串对象,null不指向任何对象。

4. 子串

String s = "阿发nihao";
String sub = s.substring(1, 4); // 1,2,3, 不含

注意:
substring(beginIndex, endIndex) 不含endInde

5. 判断内容是否相同(重点)

String s1 = new String("nihao");
String s2 = new String("nihao");	
if(s1.equals(s2))
{
	System.out.println("相同");
}

注:

  • 不能写成 if ( s1 == s2 ) {}

6. 比较大小:按字典序比较

例如: 一个班有30个学生,按字母顺序排序。

String s1 = "liming";
	String s2 = "lilei";	
	if( s1.compareTo( s2 ) < 0)
		System.out.println(s1 + "位于前面");
	else 
		System.out.println(s2 + "位于前面");

注:忽略大小写的比较,用compareToIgnoreCase()

7. 格式化

String s = String.format("姓名:%s, 年龄: %d , 身高 :
 %.2f", "老徐", 19, 1.75);

注:
String.format()是一个静态方法
格式化时:
%s 对应字符串
%d 对应整数
%.2f 表示显示2位小数

8. 查找 indexOf

如果有这个子串,则返回位置索引;否则返回-1

String s = "China is a great country";
	int pos = s.indexOf("great");
	if(pos <0)
	{
		System.out.println("没找到");
	}

默认 indexOf() 从开头开始查找
int p = str.indexOf (“SH”);

实际上,也可以指定从第几个字符开始查找
int p = str.indexOf(“SH”, 8);
第2个参数从index=8位置往后查找

9. 前缀后缀

startsWith() : 判断前缀
endsWith(): 判断后缀

示例:

String filename = "test.mp4";
	if( filename.endsWith("mp4") )
	{
		System.out.println("支持此视频格式!");
	}

10、 截掉空白

例如
荐
                                                        Java自学笔记4
字符串s的左右的空白字符都会被清掉。但内部的字符不会被清掉。
trim()返回一个新的字符串: “你好 yes OK”

11、 分割

比例:
将一个以逗号分隔的字符串分成若干个String

String s ="小张, 小王, 小李";
String[] names = s.split(",");
for(int i=0; i<names.length; i++)
{
	String name = names[i].trim();
	System.out.println(name);
}

字符串被解析,split的返回值是一个String数组。

12、转义字符

思考:

怎么用println输出一个字符串:I love “Xiao Fang” , a nice girl.
是否直接写作:System.out.println(“I love “Xiao Fang” , a nice girl.”)?
可以吗?显然里面的双引号和外面的双引号是矛盾的。怎么办,我们如何把双引号打印出来?

显然,当字符串里包含双引号等特殊字符时,就要用特殊的办法,称为“转义”。
例如:
荐
                                                        Java自学笔记4
运行一下可以发现println能输出双引号了。
除此之外,还有换行符 \n 制表符 \t 反斜杠\ 等常见的转义手段。
例如:
System.out.println(“目录 C:\windows\system32”);
运行时输出:
荐
                                                        Java自学笔记4

二、包装类

1、基本类型与包装类型

包装类型 ( Wrapper Class)
将对应的基本类型封装在内,得到一个类
大概就是这种形式:
class Integer
{
private int value = 0;
… Getter / Setter / 其他方法 …
}
在Java里面,每一个基本类型都对应一个包装类型
long <=> Long
int <=> Integer
short <=> Short
byte <=> Byte
double <=> Double
float <=> Float
boolean <=> Boolean

2、基本类型 <=> 包装类型

基本类型和包装类型的转换:
Integer a = new Integer(10);
int b = a.intValue();
也可以写得简洁一些(Java支持自动转换)
Integer k = 123;
int m = k;

3、equals 和 == 的区别

① 辨析:

public static void main(String[] args)
{
	Integer a = new Integer(12);
	Integer b = new Integer(12);
	if(a == b )
	{
		System.out.println("OK");
	}
	else
	{
		System.out.println("bad");
	}
}

这段代码输出的结果是 OK 还是 bad 呢?

语法equals 和 == 的区别
设 a,b 指向两个对象,a.equals(b) 说的是a,b的值相等 ( 内容相等 equal )
a == b 说的是a,b指向同一个对象 ( same object)
内容相等,但是对一应的对象并不一定一样
打个比方: 你今年18岁,隔壁小王也是18岁。则你和小王相等(equal),但不相同(==)

所以,上例中应改为:

public static void main(String[] args)
{
	Integer a = new Integer(12);
	Integer b = new Integer(12);
		if( a.equals(b) )
		{
			System.out.println("OK");
		}
		else
		{
			System.out.println("bad");
		}
}

name什么时候用 a == b 呢?
也是有的,如果需要比较a,b是否同一对象,则可以用 == 来判断。

三、随机数

1、Random类

Random类是JDK里自带的基本类。
java.util.Random

2、下面我们用一个例题来介绍如何使用Random可以生成随机数:

package my;
import java.util.Random;    // 这一行import不能少!
public class HelloWorld
{
	public static void main(String[] args)
	{
		Random rand = new Random();		
		for(int i=0; i< 3; i++)
		{
			int s = rand.nextInt(1000); 
			System.out.println("生成随机数: " + s);
		}
	}
}

四、字符

1、定义

字符 Character ,代表一个文字或符号。在 Java 语言里,用char类型表示字符。字符包括:中文、日文、韩文、希腊文、… 人类的所有文字和符号。
char c1 = ‘A’; // 英文字母
char c2 = ‘9’; // 数字
char c3 = ’ '; // 英文标点 (空格)
char c4 = ‘徐’; // 中文
char c5 = ‘。’; // 中文标点(句号)
char c6 = ‘の’; // 日文
char c7 = ‘며’ ; // 韩文
char c8 = ‘β’; // 希腊字母

2、字符变量的写法

(1) 只能表示一个字符
(2) 用英文单引号括号来

3、字符编码

每个字符都对应一个数字,称为字符编码
例如,
char c = ‘A’;
int n = c;
System.out.println("编码为: " + n);

常见的有: 'A’为65 , 'B’为66 … 'a’为97, 'b’为98…
‘0’ 为48, ‘1’ 为49 … ’ '为32(空格) …

其中,把 0-128 之间的称为 ASCII码 ( 仅英文、数字、英文标点符号等) , 对应键盘上的按键。

4、字符与字符串

字符串,就是一串字符

(1)字符串与字符之间的转换

  • 转换 String => char
    String str = “sjnihao世界你好”;
    char ch = str.charAt(8); // 下标从0开始计数
    char[] chs = str.toCharArray();
  • 转换 char => String
    char[] chs = {‘世’, ‘界’, ‘你’, ‘好’};
    String str = new String(chs, 1,3);
    str += ‘的’;

(2)在字符串字符中查找字符

String str = "sjnihao世界你好";
	int p = str.indexOf('发');
	System.out.println("位置: " + p);

五、关于equals

一、equals :用于比较a,b的内容是否相等

		Integer a = new Integer(10);
		Integer b = new Integer(10);
		if(a.equals( b ))
		{
			System.out.println("相等");
		}
		else
		{
			System.out.println("不等");
		}

二、 ==:用于比较a,b 是否同一个对象

Integer a = new Integer(18);
Integer b = a;		
if( a == b)
{
	System.out.println("a,b 是同一个对象");
}
else
{
	System.out.println("a,b 是两个不同的对象");
}

在String, Integer等对象的比较时,记得使用equals!!!

本文地址:https://blog.csdn.net/qq_45952745/article/details/107153731