Java学习笔记

作者:神秘网友 发布时间:2020-10-31 20:24:43

Java学习笔记

Java学习笔记

java 学习笔记

4.1:Java程序的编写:

  1. 在java中,如果源代码只有一个类,那么类的名称要与文件名一致,否则会出错。
  2. Java大小写敏感,请注意!

4.2:Java文件的命名规则:

  1. 只要是Java程序就必须放在一个类中,例如
    [public] class 类名称{}
    首字母必须大写,一个Java文件只能有一个public类
  2. 只能有一个public class类,但是class类可以有很多

4.3:主方法:

  1. 任何程序都是从主方法中开始执行,定义如下:
    public static void main(String args[]){ }
  2. 输出语句:System.out.println() ;。ln是指输出时会换一行,如果没有ln就是直接输出而没有换行。

6.1:注释标记

与之前学过的差不多,略

6.2:基本数据类型

Java学习笔记
注意:
3. 定义float类型的数据,要在小数之后加上f。定义long类型的要在整数后面加上L
4. 在Java中数字并不能代表true和false,布尔值只能是True和False(大小写注意!)

6.3:关键字与标识符:

标识符由字母、数字、下划线、$组成

6.4:运算符:

  1. 不必死记硬背优先级,善于用小括号
  2. 三目运算符:
    a>b?a:b意思是若a>b为真,则返回a,假的话返回b。
  3. 逻辑运算符&与&&:
    &:两个都要判断
    &&:短路,前面的不满足后面的就不判断了。
  4. 逻辑运算符|与||:
    |是两个都判断,||是前面的满足了的话后面的就不需要看了。
  5. 位运算符&与|:
    &是两个都是1才能是1,|是有1则1.
  6. 移位操作:<<与>>

7.1:选择语句:

  1. if语句:
public class IfElseSelect{
public static void main(String args[]) {
} }
int age = 300;
if (age >= 0 && age <= 12) {
System.out.println("现在是少年期!");
} else if (age > 12 && age <= 18) {
System.out.println("现在是青少年期!");
} else if (age > 18 && age <= 40) {
System.out.println("青年期");
} else if (age > 40 && age <= 55) {
System.out.println("中年期"); } else if (age > 200) {
System.out.println("黑山老妖!"); }
  1. switch语句:
switch(参数) {
case 常量表达式 1: break; case 常量表达式 2: break; ...
default: break;
}

注意:
switch接受的参数类型有10种,分别是基本类型的byte,short,int,char,以及引用类型的String(只有JavaSE7及以上版本接受String类型参数), enum和 byte,short,int,char 的封装类 Byte,Short,Integer,Character
· case 后紧跟常量表达式,不能是变量。
· default语句可有可无,如果没有case语句匹配,default语句会被执行。
· case语句和default语句后的代码可不加花括号。
· 如果某个case语句匹配,那么case后面的语句块会被执行,且如果后面没有break 关键字,会继续执行后面的 case 语句代码和 default,直到遇见 break 或者右花括号。

7.2:循环语句:

  1. while语句:
    先判断后执行
  2. do…while语句:
    限制性后判断
  3. for语句:
    最常用的语句
    注意这个用法:foreach语句,在遍历数组、集合方面,foreach为开发人员提供了极大的方便,for- each 的语句格式:
 for(元素类型 t 元素变量 x : 遍历对象 obj){ 引用了x的Java语句;
}

例如:

public class ForeachExample{
    public static void main(String[] args) {
        String[] books = { "Java", "c", "c++", "c#", "asp" }; 
        for (String book : books) {
            System.out.println(book); }
        }
     }
 }

输出结果:

Java
c
c++
c#
asp

7.3:跳转语句:

  1. break :跳出当前循环;但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层 break 才能跳出所有循环。
  2. continue:终止当前循环,但是不跳出循环(在循环中continue后面的语句是不会执 行了),继续往下根据循环条件执行循环。
  3. return语句可以终止成员方法的执行并返回至调用这个成员方法的位置。如果这个成 员方法需要返回值,将通过 return 带出。
    格式一:return;(只能用于返回类型为 void 的成员方法) 格式二:return 表达式;
  4. 注意break和continue的区别:
    break:
public class BreakExampleInner{
public static void main(String args[]) {
for (int i = 0; i < 3; i++) { System.out.print("Pass " + i + ":"); for (int j = 0; j < 100; j++) {
if (j == 10)
break; // terminate loop if j is 10
System.out.print(j + " "); }
System.out.println(); }
System.out.println("Loops complete."); }
}

结果:

Pass 0:0 1 2 3 4 5 6 7 8 9 
Pass 1:0 1 2 3 4 5 6 7 8 9 
Pass 2:0 1 2 3 4 5 6 7 8 9 
Loops complete.

continue:

public class continueExample{
public static void main(String[] args) {
for (int i = 0; i < 5; i++) { if (i == 3)
continue; System.out.println("i=" + i);
}
System.out.println("Loop complete.");
} }

结果:

i=0
i=1
i=2
i=4
Loop complete.

8.1:方法(函数)的定义:

在程序中,如果某一段代码需要被重复调用的时候,就可以通过方法来完成,方法的定义格式如下:(在涉及面向对象内容之前,我们采用 static 类型的方法,只有 static 类型 的方法,主函数中才能调用,在构建对象以后,可以采用“对象.方法”的形式)。

 public static 返回值类型 方法名称(参数类型 参数名称,.....){
 [return 返回值] ;
 }
  1. 无返回值的定义。得用void
public class MethodDemo01 {
public static void main(String args[]) {
fun(); }
public static void fun() { 
System.out.println("*************************"); 
System.out.println("* JAVA 一起学! *"); 
System.out.println("*************************");
} }
  1. 有返回值的定义。必须要在返回值类型上写清楚具体的数据类型:
public class MethodDemo02 {
    public static void main(String args[]) {              System.out.println(add(10, 20));
    }
public static int add(int x, int y) { // 定义两个数字相加
    return x + y; 
    }
}

8.2:方法的重载

方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。
例如:

public class MethodDemo04 {
    public static void main(String args[]) {              System.out.println(add(10, 20));                  System.out.println(add(10.0f, 20.3f));            System.out.println(add(10, 20, 30));
}
public static int add(int x, int y) { // 定义两个整数相加
    return x + y; 
    }
public static float add(float x, float y) { // 定义浮点数相加 return x + y;
    return x + y; 
}
public static int add(int x, int y, int z) { // 定义三个数字相加
    return x + y + z; 
    }
}

8.3:递归

数组与之前学的都差不多
注意:

  1. Java自己提供了许多的方法,Arrays类是一个非常有用数组工具类,里面有很多工具方法,检索、填充、排序、比 较、toString()等
  2. 数组的两种格式化定义,以及数组的动态静态初始化

Java 中的字符串需要使用 String 类型(实际上是 String 类)进行定义。String 类 的操作中依然可以使用“+”或“+=”进行字符串的连接,各个数据类型的数据只要是碰到 了 String 类的内容,则都统一向 String 进行转换,所以 String 类非常重要。

10.1:string的对象实例化

  1. 直接赋值:
public class StringDemo01 {
public static void main(String args[]) {
} }
String str = "Hello"; // 定义一个字符串 str += " World"; // 字符串连接 System.out.println(str);
  1. 构造方法赋值:
public class StringDemo02 {
public static void main(String args[]) {
} }
String str = new String("Hello"); // 定义一个字符串 str += " World"; // 字符串连接 System.out.println(str);

一般,在开发中绝对不能使用关键字 new 实例String类。

10.2:string是不可变类

在 Java 中,String 类是不可变的。那么到底什么是不可变的对象呢?
可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对 象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型 的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。

首先创建一个String对象s,然后让s的值为“ABCabc”,然后又让s的值为“123456”,从打印结果可以看出,s 的值确实改变了。那么怎么还说 String 对象是不可变的呢? · 其实这里存在一个误区:s只是一个String对象的引用,并不是对象本身。对象在内存中是一块内存区,成员变量越多,这块内存区占的空间越大。引用只是一个 4字节的数据,里面存放了它所指向的对象的地址,通过这个地址可以访问对象。
也就是说,s 只是一个引用,它指向了一个具体的对象,当 s=“123456”; 这句代 码执行过之后,又创建了一个新的对象“123456”, 而引用 s 重新指向了这个新的 对象,原来的对象“ABCabc”还在内存中存在,并没有改变。内存结构如下图所示:

Java学习笔记

10.3:字符串的比较

  1. “==”
    两个数字可以直接用双等号来比较,string一样可以
    例如:
public class StringDemo06 {
    public static void main(String args[]) {
        String str1 = "hello";
        String str2 = new String("hello");
        String str3 = str2;
        System.out.println("str1 == str2 --> " + (str1 == str2)); 
        System.out.println("str1 == str3 --> " + (str1 == str3)); 
        System.out.println("str2 == str3 --> " + (str2 == str3));
} }

结果:

 str1 == str2 --> false 
 str1 == str3 --> false 
 str2 == str3 --> true

Java学习笔记

所以“==”用在数值上表示判断是否相等,如果是用在了对象上,则表示的是判断两个 对象的地址是否相等。

所以,比较字符串只能靠equals方法,例如:

public class StringDemo06 {
    public static void main(String args[]) {
        String str1 = "hello";
        String str2 = new String("hello");
        String str3 = str2;
        System.out.println("str1 == str2 --> " +  (str1.equals(str2))); 
        System.out.println("str1 == str3 --> " +  (str1.equals(str3))); 
        System.out.println("str2 == str3 --> " +  (str2.equals(str3)));
} }

可得出结论:
· ==:用于数值比较,比较的是两个字符串的地址值
· equals():用于内容的比较,比较两个字符串的内容是否相等

10.4:string匿名对象

匿名对象,是指没有名字的对象。即没有栈区的引用,只在堆区存在的对象。 在程序中使用“"”括起来的内容就属于字符串,那么对于一个普通的字符串来讲,一个字 符串就是 String 类的匿名对象,可以直接使用,例如:

public class StringDemo08 {
    public static void main(String args[]) {              System.out.println("hello".equals("hello")); // true
} }

Java学习笔记相关教程

  1. JavaWeb - 【Filter】表单显示

    JavaWeb - 【Filter】表单显示 需求分析 程序设计 MyFilter index.jsp product_input.jsp table product_details.jsp 效果测试 一:需求分析 二:程序设计 1 MyFilter package xyz.xx.filter;import org.apache.commons.beanutils.BeanUtils;import xyz.xx.po

  2. java三特性之继承

    java三特性之继承 继承 龙生龙,凤生凤,老鼠的儿子会打洞 这应该就是我对对继承的理解了吧 继承就是 子类可以调用父类的成员和方法 ( 私有的除外,毕竟谁还没点小秘密 ) 父类也被称之为基类或者超类,( 其实都是一个东西 ) 格式如下?? public class 子类

  3. TypeScript

    TypeScript TypeScript是JavaScript超集(superset) TypeScript 安装(npm) 安装typescript依赖 npm i typescript -D 这一步安装完成之后其实就可以使用tsc命令来执行TypeScript的相关代码了 配置tsconfig.json文件 tsc --init 生成的配置文件如下: { compil

  4. Java基础知识(下)

    Java基础知识(下) 1.程序流程控制: 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能够完成一定功能的小逻辑模块。 结构化程序设计中规定的三种基本流程结构是:条件结构,分支结构,和循环结构。 顺序结构 :程序从上往下执行,中

  5. 2.线程系列- volatile与Java内存模型

    2.线程系列- volatile与Java内存模型 先看个案例: public class ThreadDemo3 { static boolean flag = true; static class T1 extends Thread{ @Override public void run() { System.out.println(线程 + this.getName() + in); while (flag){ } System.out.

  6. String.format针对java的匹配正则表达式匹配上的字符串进行解决

    String.format针对java的匹配正则表达式匹配上的字符串进行解决匹配替换的问题 1、问题描述: 1.1我这边需要对资讯内容进行打标更新,针对关键字需要转换Html的标签格式化进行替换掉展示高亮显示,然后进行前端展示,可是老代码是432个高亮词,100左右个标签

  7. JAVA多线程入门(转载学习)

    JAVA多线程入门(转载学习) 进程是程序的动态执行过程 需要经历从代码加载、代码执行到执行完毕 一个完整过程。 线程是比进程更小的执行单位。一个进程在执行过程种可以产生多个更小的程序单元。这些更小的单元称为线程 java种线程实现的方式 1.实现Runnable

  8. Java动态生成模板

    Java动态生成模板 逻辑 (1)制作模板(手动) 微软docx文件----转zip文件(手动改后缀名)---解压—找到对应的xml文件,删除变量间多余的字符---压缩文件---转为docx(手动改后缀名) (2)系统识别模板(替换模板中的变量为具体值) 找到模板文件----转zip