Java代码示例:
public class helloworld {
public static void main(String[] args){
System.out.println("hello world");
}
}
?Java程序的名字需要和文件名字一致,就是那个helloworld
Java程序需要对类有深度的认识:
? ? ? ?对象是类的一个实例,有状态和行为。例如,狗是一个对象,它的状态有:颜色,名字,品种。行为有摇尾巴,叫,吃等。
? ? ? ?方法:方法可以理解为是类的状态的实现我认为,例如实现吃这个动作,或者实现颜色是什么颜色。
Java注释和c++有点像
//是单行注释
/*注释*/是多行注释
文档注释:没干过开发,不知道有什么用,需要的自学吧!
Java作为一种面向对象编程语言,支持:
1.多态 2.继承 3.封装 4.抽象 5.类 6.对象 7.实例 8.方法 9.重载
狗这个类的相关代码:
public class dog {
String breed;//品种
int size;//大小
String colour;//颜色
int age;//年龄
void eat(){ //实现吃这个动作
}
void run(){//实现怕跑这个动作
}
void sleep(){//实现睡觉这个动作
}
void name(){//赋予名字这个动作
}
}
用new创建对象,跟c++很像
? ? ? ?第一只狗是无参构造,没有赋予名字,第二只狗有参构造,。构造的时候会赋予名字,两个调用的函数不一样,可以往上看一个图,第一个调用的是dog(),第二个调用的是dog(String name)
执行顺序是这样的,实例后的对象调用函数就好了
Java的声明:
1.一个源文件只能有一个public类
2.一个源文件可以有多个非public类
3.源文件名字应该跟类名一致,就像开头说的helloworld,我这个dog的源文件名字就叫做dog
跟c++差不多,private变量不能直接被访问到,需要通过函数调用
protected可以被继承
java提供了八种数据类型,六种数字,一个字符类型,一个布尔型
byte int short long float double boolean char
public class PrimitiveTypeTest {
public static void main(String[] args) {
// byte
System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
System.out.println("包装类:java.lang.Byte");
System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
System.out.println();
// short
System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
System.out.println("包装类:java.lang.Short");
System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
System.out.println();
// int
System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
System.out.println("包装类:java.lang.Integer");
System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
System.out.println();
// long
System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
System.out.println("包装类:java.lang.Long");
System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
System.out.println();
// float
System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
System.out.println("包装类:java.lang.Float");
System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
System.out.println();
// double
System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
System.out.println("包装类:java.lang.Double");
System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
System.out.println();
// char
System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
System.out.println("包装类:java.lang.Character");
// 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
System.out.println("最小值:Character.MIN_VALUE="
+ (int) Character.MIN_VALUE);
// 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
System.out.println("最大值:Character.MAX_VALUE="
+ (int) Character.MAX_VALUE);
}
}
类型会有默认值:
主要记住boolean默认值是false
Java可以定义常量,有点像define?
输出的定义的常量maxn
java也可以自动类型转换int a=128; byte b=byte(a);
剩下的一些规则跟c++很像,我就不说了
检查对象类型,如果boolean result = name instanceof int;
那返回的就是false
跟c++一样的感觉
Java有四种循环
1.while()
2.do{
? ?}while()
3.for(赋值:条件:更新数值)
4.for增强,有点像python的循环
前三个循环用法如下
感觉奇怪的可以对照下输出:
?
for增强
输出结果:
别忘了还有continue和break两个关键字
if()
if()
else
if()
else if()
else
x满足什么条件就跳转至哪个数那里,不满足就跳转到default,如果x=1,就case1,如果x=3,就default
下面的表中列出的是 Number & Math 类常用的一些方法:
序号 | 方法与描述 |
---|---|
1 | xxxValue() 将 Number 对象转换为xxx数据类型的值并返回。 |
2 | compareTo() 将number对象与参数比较。 |
3 | equals() 判断number对象是否与参数相等。 |
4 | valueOf() 返回一个 Number 对象指定的内置数据类型 |
5 | toString() 以字符串形式返回值。 |
6 | parseInt() 将字符串解析为int类型。 |
7 | abs() 返回参数的绝对值。 |
8 | ceil() 返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。 |
9 | floor() 返回小于等于(<=)给定参数的最大整数 。 |
10 | rint() 返回与参数最接近的整数。返回类型为double。 |
11 | round() 它表示四舍五入,算法为?Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。 |
12 | min() 返回两个参数中的最小值。 |
13 | max() 返回两个参数中的最大值。 |
14 | exp() 返回自然数底数e的参数次方。 |
15 | log() 返回参数的自然数底数的对数值。 |
16 | pow() 返回第一个参数的第二个参数次方。 |
17 | sqrt() 求参数的算术平方根。 |
18 | sin() 求指定double类型参数的正弦值。 |
19 | cos() 求指定double类型参数的余弦值。 |
20 | tan() 求指定double类型参数的正切值。 |
21 | asin() 求指定double类型参数的反正弦值。 |
22 | acos() 求指定double类型参数的反余弦值。 |
23 | atan() 求指定double类型参数的反正切值。 |
24 | atan2() 将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。 |
25 | toDegrees() 将参数转化为角度。 |
26 | toRadians() 将角度转换为弧度。 |
27 | random() 返回一个随机数。 |
然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情况。为了解决这个问题,Java语言为内置数据类型char提供了包装类Character类。
Character类提供了一系列方法来操纵字符。你可以使用Character的构造方法创建一个Character类对象,例如:
Character ch = new Character('a');//我还没搞懂实际用处
实用的函数
下面是Character类的方法:
序号 | 方法与描述 |
---|---|
1 | isLetter() 是否是一个字母 |
2 | isDigit() 是否是一个数字字符 |
3 | isWhitespace() 是否是一个空白字符 |
4 | isUpperCase() 是否是大写字母 |
5 | isLowerCase() 是否是小写字母 |
6 | toUpperCase() 指定字母的大写形式 |
7 | toLowerCase() 指定字母的小写形式 |
8 | toString() 返回字符的字符串形式,字符串的长度仅为1 |
字符串就是许多字符连在一起的
string a="abcedfs"
字符串下标从0开始
字符串获取长度 a.length()函数,字符串拼接concat函数。也可以用+号
string a ,b;
string c=a+b;
string的常用函数
下面是 String 类支持的方法,更多详细,参看?Java String API?文档:
可变字符串,感觉很实用,因为可以对字符串进行修改,string是不可以修改的
看这副图理解:
以下是 StringBuffer 类支持的主要方法:
序号 | 方法描述 |
---|---|
1 | public StringBuffer append(String s) 将指定的字符串追加到此字符序列。 |
2 | public StringBuffer reverse() ?将此字符序列用其反转形式取代。 |
3 | public delete(int start, int end) 移除此序列的子字符串中的字符。 |
4 | public insert(int offset, int i) 将? int ?参数的字符串表示形式插入此序列中。 |
5 | insert(int offset, String str) 将? str ?参数的字符串插入此序列中。 |
6 | replace(int start, int end, String str) 使用给定? String ?中的字符替换此序列的子字符串中的字符。 |
以下列表列出了 StringBuffer 类的其他常用方法:
序号 | 方法描述 |
---|---|
1 | int capacity() 返回当前容量。 |
2 | char charAt(int index) 返回此序列中指定索引处的? char ?值。 |
3 | void ensureCapacity(int minimumCapacity) 确保容量至少等于指定的最小值。 |
4 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此序列复制到目标字符数组? dst 。 |
5 | int indexOf(String str) 返回第一次出现的指定子字符串在该字符串中的索引。 |
6 | int indexOf(String str, int fromIndex) 从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。 |
7 | int lastIndexOf(String str) 返回最右边出现的指定子字符串在此字符串中的索引。 |
8 | int lastIndexOf(String str, int fromIndex) 返回 String 对象中子字符串最后出现的位置。 |
9 | int length() ?返回长度(字符数)。 |
10 | void setCharAt(int index, char ch) 将给定索引处的字符设置为? ch 。 |
11 | void setLength(int newLength) 设置字符序列的长度。 |
12 | CharSequence subSequence(int start, int end) 返回一个新的字符序列,该字符序列是此序列的子序列。 |
13 | String substring(int start) 返回一个新的? String ,它包含此字符序列当前所包含的字符子序列。 |
14 | String substring(int start, int end) 返回一个新的? String ,它包含此序列当前所包含的字符子序列。 |
15 | String toString() 返回此序列中数据的字符串表示形式。 |
Java语言使用new操作符来创建数组,语法如下:
arrayRefVar = new dataType[arraySize];
上面的语法语句做了两件事:
可以用强化for循环来实现遍历for(x;xs),相同类型的x取出xs中的元素
多维数组可以看成是数组的数组,比如二维数组就是一个特殊的一维数组,其每一个元素都是一个一维数组,例如:
String[][] str = new String[3][4];
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。
具有以下功能:
具体说明请查看下表:
序号 | 方法和说明 |
---|---|
1 | public static int binarySearch(Object[] a, Object key) 用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。 |
2 | public static boolean equals(long[] a, long[] a2) 如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
3 | public static void fill(int[] a, int val) 将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
4 | public static void sort(Object[] a) 对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。 |
运行java的时候会出现这个冒了一串红但是还是能输出出来
这个是因为powershell的运行策略
解决方法:
第一步:管理员身份运行 window.powershell
第二步:执行:get-ExecutionPolicy,显示Restricted,表示状态是禁止的;
第三步:执行:Set-ExecutionPolicy -Scope CurrentUser
第四步:会提示输入参数:RemoteSigned
第五步:会提示进行选择(如下) :
执行策略更改
执行策略可帮助你防止执行不信任的脚本。更改执行策略可能会产生安全风险,如 https:/http://go.microsoft.com/fwlink/?LinkID=135170
中的 about_Execution_Policies 帮助主题所述。是否要更改执行策略?
[Y] 是(Y) [A] 全是(A) [N] 否(N) [L] 全否(L) [S] 暂停(S) [?] 帮助 (默认值为“N”):
请选择:Y
然后就解决了
?
学习java第一天,主要都跟c++差不多,所以感觉比较容易这些基础的,难得应该在后面