1、++i:在i存储的值上增加1并向使用它的表达式返回增加后的值。                  先加再赋值                    

2、i++:对 i 增加1, 但返回的是原来未增加的值。循环中下次使用就会+1。      先赋值再加

(原理参考https://zhuanlan.zhihu.com/p/40645506)虽然我看了还是没懂

(个人见解:首先要理解赋值的意思,就是传递。i++直接单独使用只是将这个值放在了寄存器,和没加一样,循环的时候才能体现效果)

3、&&:若第一个条件不满足,后面条件就不再判断。

4、&: 要对所有的条件都进行判断。

5、sum+=i 等价于 sum=sum+i。

6、static静态方法或变量可直接调用,非static需要实例化new后才能调用,方法不返回数据,可以使用void声明,没有void则需要return。

7、xx.xxx:就是调用xx类中的xxx方法。

8、this.xx:调用当前类中的xx。

9、==:进行的是数值比较,如果用于对象比较,比较的是两个内存的地址数值。

10、equals():是类所提供的一个比较方法,可以直接进行字符串内容的判断。

11、Java中的static关键字解析 https://www.cnblogs.com/dolphin0520/p/3799052.html

foreach:迭代输出

对于数组而言,一般都会使用for循环进行输出,但是在使用传统for循环输出的时候往往使用下标的形式进行数组元素的访问。

public class ArrayDemo{public static void main(String args[]){int data[] = new int[]{1,2,3,4,5};for (int x = 0; x < data.length; x++){System.out.println(data[x]);         }}
}

JDK1.5之后,为了处理下标对程序的影响,以免数组越界,参考了.NET中的设计,引入了一个增强型的for循环(foreach),利用foreach的语法结构可以自动获取数组中的每一个元素,避免下标访问。

语法结构

for(数据类型  变量 : 数组|集合){ }

最大特点在于可以将数组中的每一个元素的内容取出保存在变量里面,这样就可以直接通过变量获取数组内容,而避免下标的方式来获取。

public class ArrayDemo{public static void main(String args[]){int data[] = new int[]{1,2,3,4,5};for (int temp : data){    //自动循环,将data数组的每一个内容交给tempSystem.out.println(temp);         }}
}

10、java中,什么时候需要new来实例化?
当需要用到一个类(接口、抽象类除外)的时候,需要new来进行初始化,才可以调用该类的方法、属属性、变量等。
比如:

public class Main{public static void main(String[] args){Person p = new Person();System.out.println(p.num);p.getPrint();}
}
class Person{int num;public void getPrint(){System.out.println("hello Person!");}
}

11、Java中 主方法组成分析

public static void main(String args[])

public:描述的是一种访问权限,主方法是一切的开始点,一定是共用的。

static:程序的执行是通过类名称完成的,所以表示此方法是由类直接调用。

void:主方法是一切的起点,起点一开始就没有返回的可能。

main:是系统定义好的名称

String args[]:字符串的数组,可以实现程序启动参数的接收。

12、String类的常用方法

字符串与字符

package test;
public class example {public static void main(String[] args) {String str = "helloworld";char[] result = str.toCharArray() ;        //将字符串变为数组for(int x=0; x<result.length; x++){result[x] -=32;           //编码减少32}//将处理后的字符数组交给String变为字符串String newstr = new String(result);System.out.println(newstr) ;System.out.println(new String(result, 0, 5)) ;}}

13、实现字符串的数据检查

package test;
public class example {public static void main(String[] args) {String str = "helloworld";System.out.println(isNumber(str));System.out.println(isNumber("123"));}public static boolean isNumber(String str){char[] result = str.toCharArray();for(int x=0; x<result.length; x++){if(result[x] < '0' || result[x] > '9'){return false;}}return true;}}

14、字符串比较

package test;
public class example {public static void main(String[] args) {String strA = "m";String strB = "M";System.out.println(strA.compareToIgnoreCase(strB));System.out.println(strA.compareTo(strB));}}
package test;
public class example {public static void main(String[] args) {Member memA = new Member("A","张三" );Member memB = new Member("B","李四" );Role roleA=new Role(1L,"系统配置");Role roleB=new Role(2L,"备份管理");Role roleC=new Role(3L,"人事管理");Privilege priA = new Privilege(1000L,"系统初始化");Privilege priB = new Privilege(1001L,"系统系统还原");Privilege priC = new Privilege(1002L,"系统环境处理");Privilege priD = new Privilege(2000L,"备份员工数据");Privilege priE = new Privilege(2001L,"备份部门数据");Privilege priF = new Privilege(2002L,"备份公文数据");Privilege priG = new Privilege(3000L,"增加员工");Privilege priH = new Privilege(3001L,"编辑员工");Privilege priI = new Privilege(3002L,"浏览员工");Privilege priJ = new Privilege(3003L,"员工离职");// 增加角色与权限的关系roleA.setPrivileges(new Privilege[] {priA,priB,priC});roleB.setPrivileges(new Privilege[] {priD,priE,priF});roleC.setPrivileges(new Privilege[] {priG,priH,priI,priJ});//增加权限与角色对应priA.setRole(roleA) ;priB.setRole(roleA) ;priC.setRole(roleA) ;priD.setRole(roleB) ;priE.setRole(roleB) ;priF.setRole(roleB) ;priG.setRole(roleC) ;priH.setRole(roleC) ;priI.setRole(roleC) ;priJ.setRole(roleC) ;//增加用户与角色关系memA.setRoles(new Role[] {roleA,roleB}) ;memB.setRoles(new Role[] {roleA,roleB,roleC}) ;roleA.setMembers(new Member[] {memA,memB}) ;roleB.setMembers(new Member[] {memA,memB}) ;roleC.setMembers(new Member[] {memB}) ;//根据要求获取数据System.out.println("------通过用户查找信息------");System.out.println(memB.getInfo());for(int x=0;x<memB.getRoles().length; x++){System.out.println("\t|- "+memB.getRoles()[x].getInfo() ) ;for(int y=0;y<memB.getRoles()[x].getPrivileges().length;y++){System.out.println("\t\t|-" + memB.getRoles()[x].getPrivileges()[y].getInfo());}}System.out.println("------通过角色查找信息------");System.out.println(roleB.getInfo());System.out.println("\t|- "+"浏览此角色下的所有权限信息:") ;for(int x=0;x<roleB.getPrivileges().length;x++){System.out.print("\t\t|- " +roleB.getPrivileges()[x].getInfo());}System.out.println("\t|- "+"浏览此角色下的所有用户信息:") ;for(int x=0; x<roleB.getMembers().length; x++){System.out.println("\t\t|- "+roleB.getMembers()[x].getInfo());}System.out.println("------通过权限查找信息------");System.out.println(priA.getInfo());for(int x=0; x<priA.getRole().getMembers().length; x++){System.out.println("\t|"+priA .getRole() .getMembers() [x].getInfo() );}}
}
class Member{private String mid;private String name;private  Role roles[];public Member(String mid,String name){this.mid=mid;this.name=name;}public void setRoles(Role roles[]){this.roles = roles;}public Role[] getRoles() {return roles;}public String getInfo(){return "【用户信息】mid="+this.mid + "、名字=" + this.name;}
}
class Role{private long rid;private String title;private Member members[];private Privilege[] privileges;public Role(long rid,String title){this.rid=rid;this.title=title;}public void setMembers(Member members[]){this.members = members;}public Member[] getMembers(){return this.members;}public void setPrivileges (Privilege privileges[] ){this.privileges =privileges ;}public Privilege[] getPrivileges(){return this.privileges;}public String getInfo(){return "【角色信息】rid="+this.rid+"、title="+this.title;}
}
class Privilege{private long  pid;private String title;private Role role;public Privilege (long pid,String title){this.pid=pid;this.title=title;}public void setRole(Role role){this.role = role;}public Role getRole(){return this.role;}public String getInfo(){return "【权限信息】pid"+this.pid+"、title="+this.title;}
}

1、字符串比较

package test;
public class example {public static void main(String[] args) {String strA = "mldn";String strB = "mlDN";System.out.println("测试1:"+strB.compareTo(strA));System.out.println("测试2:"+"hello".compareTo("Hello"));System.out.println(strA.compareToIgnoreCase(strB));}}

2、字符串查找

package test;
public class example {public static void main(String[] args) {String str = "深情不及久伴";System.out.println(str.contains("爱") );System.out.println(str.contains("不及") );//JDK1.5之前只能用 indexOf 来查找,找到了返回位置数,没找到返回-1String str1 = "Bsciology";System.out.println("indexOf测试:" + str1.indexOf("l"));System.out.println("indexOf测试:" + str1.indexOf("a"));if(str1.indexOf("o") != -1){System.out.println("找到了");}else{System.out.println("没找到");}}}
package test;
public class example {public static void main(String[] args) {String str = "深情不及久伴";System.out.println(str.lastIndexOf("不",1) );System.out.println(str.indexOf("不") );}}

3、字符串开头结尾查找

package test;
public class example {public static void main(String[] args) {String str = "深情不及久伴";System.out.println(str.startsWith("深"));System.out.println(str.endsWith("伴"));}}

4、字符串替换

package test;
public class example {public static void main(String[] args) {String str = "helloworld";System.out.println(str.replaceAll("l","o"));System.out.println(str.replaceFirst("h","f"));}}

5、字符串拆分

package test;
public class example {public static void main(String[] args) {String str = "hello world hello www";String result[] = str.split(" ");for(int x=0; x<result.length; x++){System.out.println(result[x]);}}}
package test;
public class example {public static void main(String[] args) {String str = "hello world hello www";String result[] = str.split(" ",2);for(int x=0; x<result.length; x++){System.out.println(result[x]);}}}
package test;
public class example {public static void main(String[] args) {String str = "192.168.5.1";//  拆分不了,正则原因, 使用“\\”进行转义, \\=\String result[] = str.split("\\.");for(int x=0; x<result.length; x++){System.out.println(result[x]);}}}

6、字符串截取

public String substring(int beginIndex);    从指定索引截取到结尾

public String substring(int beginIndex , int endIndex);    截取指定范围中的子字符串

package test;
public class example {public static void main(String[] args) {String str = "Pain past is pleasure";System.out.println(str.substring(3));System.out.println(str.substring(3,8));}}

有时候开始和结束索引往往都是通过indexOf()方法计算的出来的。

package test;
public class example {public static void main(String[] args) {String str = "aaa-20201105-张三.jpg";int beginIndex = str.indexOf("-",str.indexOf("20201105"))+1;int endIndex = str.lastIndexOf(".");System.out.println(str.substring(beginIndex ,endIndex ) );}}

7、格式化字符串

package test;
public class example {public static void main(String[] args) {String name = "张三";int age = 18;double score = 98.141592654;String str = String.format("姓名:%s、年龄:%d、成绩:%5.2f。",name,age,score);System.out.println(str);}}

8、其他操作方法

package test;
public class example {public static void main(String[] args) {String strA = "www.baidu.com";String strB = "www.".concat("baidu").concat(".com");System.out.println(strB);System.out.println(strA == strB);}}

“""”和“null”不等,一个表示有实例化对象,一个表示没有实例化对象。isEmpty()主要是判断字符串的内容,所以一定要是在有实例化对象的时候进行调用。

package test;
public class example {public static void main(String[] args) {String str = "";System.out.println(str.isEmpty());  //trueSystem.out.println("baidu".isEmpty());  //flase}}

trim():去除左右的空白字符串

package test;
public class example {public static void main(String[] args) {String str = "   Hello  World";System.out.println(str.length());String trimStr = str.trim() ;System.out.println(str);System.out.println(trimStr);}}
package test;
public class example {public static void main(String[] args) {String str = "Hello World!!!";System.out.println(str.toUpperCase() );   //转大写System.out.println(str.toLowerCase() );   //转小写}}

9、自定义首字母大写方法

package test;
class StringUtil{public static String initcap(String str){if(str == null || "".equals(str) ){return str;    //原样返回}if(str.length() == 1){return str.toUpperCase();}return str.substring(0,1).toUpperCase() +str.substring(1) ;}
}
public class example {public static void main(String[] args) {String str = "Hello World!!!";System.out.println(StringUtil.initcap("hello"));System.out.println(StringUtil.initcap("m"));}}

课时60:继承的实现

如果在Java的程序之中想要实现继承的关系,那么就必须依靠extends关键字来完成,此关键字的具体语法如下:

class 子类 extends 父类 {}

特别需要注意的是,很多情况下会把子类称为派生类,父类成为超类(SuperClass)。

范例:

package test;
class Person{private String name;private int age;public void setName(String name){this.name=name;}public void setAge(int age){this.age=age;}public String getName(){return this.name;}public int getAge(){return this.age;}
}
class Students{private String name;private int age;private String school;public void setName(String name){this.name=name;}public void setSchool(String school){this.school = school;}public void setAge(int age){this.age=age;}public String getName(){return this.name;}public String getSchool(){return school = school;}public int getAge(){return this.age;}
}
class Student extends Person{//Student是子类//在子类中不定义任何的功能
}
public class example {public static void main(String[] args) {Student stu = new Student();stu.setName("林大强");   //父类Person定义stu.setAge(31);         //父类Person定义System.out.println("姓名:" + stu.getName() + "、年龄:" + stu.getAge() );}}

继承实现的主要目的是在于子类可以重用父类中的结构,并且也可以实现功能的扩充,那么同时强调了:子类可以定义更多的内容,描述的范围更小。

范例:子类扩充定义

package test;
class Person{private String name;private int age;public void setName(String name){this.name=name;}public void setAge(int age){this.age=age;}public String getName(){return this.name;}public int getAge(){return this.age;}
}
class Students{private String name;private int age;private String school;public void setName(String name){this.name=name;}public void setSchool(String school){this.school = school;}public void setAge(int age){this.age=age;}public String getName(){return this.name;}public String getSchool(){return school = school;}public int getAge(){return this.age;}
}
class Student extends Person{//Student是子类private String school;  //子类扩充的属性public void setSchool(String school){this.school=school;}public String getSchool(){return this.school;}
}
public class example {public static void main(String[] args) {Student stu = new Student();stu.setName("林大强");   //父类Person定义stu.setAge(31);         //父类Person定义stu.setSchool("家里蹲大学");System.out.println("姓名:" + stu.getName() + "、年龄:" + stu.getAge() + "、学校:" + stu.getSchool() );}}

课时61:子类对象实例化流程

package test;
class Person{public Person(){System.out.println("【Person父类】一个新的Person父类实例化对象产生了。");}
}
class Student extends Person{//Student是子类public Student(){ //构造方法super();  //写与不写效果一样//super()表示的就是子类构造调用父类构造的语句,只能放在子类构造方法的首行。//在默认情况下的实例化处理,子类只会调用父类中的无参构造方法。所以写不写super()区别不大//但是父类没有提供无参构造的情况下,就必须利用super()明确调用有参构造。System.out.println("【Student子类】一个新的Student实例化对象产生了。");}
}
public class example {public static void main(String[] args) {new Student();  //实例化子类}}

结论:无论如何折腾,在实例化子类对象的同时一定会实例化父类对象,目的是为了所有的属性可以进行空间的分配。

super与this都可以调用构造方法,super是由子类调用父类的构造,而this是调用本类的构造,并且都一定要放在构造方法的首行,所以两个语句不允许同时出现。

package test;
class Person{private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getInfo(){return "姓名:"+this.name + "、年龄"+this.age ;}
}
class Student extends Person{//Student是子类private String school;public Student(String name,int age,String school){super(name,age);this.school = school;}
}
public class example {public static void main(String[] args) {Student stu = new Student("暖光",3,"幼儿园");System.out.print(stu.getInfo());//默认打印的是对象的内存地址,所以输出是:test.Student@64c64813//重写Student的toString方法,咋个写?}}

我写不来了,就这样吧,越改错越多,只是想展示一下stu的输出,结果是内存地址,只好多加了一个getInfo进去,结果又少了school,唉。

Java 从入门到放弃

方法1,将private改成public

package test;
class Person{public String name;public int age;public Person(String name, int age) {this.name = name;this.age = age;}
}
class Student extends Person{private String school;public Student(String name,int age,String school){super(name,age);this.school = school;}public String toString(){return  super.name + super.age + this.school ;}
}
public class example {public static void main(String[] args) {Student h = new Student("暖光",5,"握草");System.out.print(h.toString() );//默认打印的是对象的内存地址,所以输出是:test.Student@64c64813//重写Student的toString方法?}}

Java中控制访问权限的关键字主要有4个:public、private、default、protected。
均可以修饰类、方法、变量。

1.public
内容对所有的类、所有对象都开放,可以被直接访问。

2.private
修饰的内容仅允许同一个类的成员访问。
修饰类中的全局变量时,内容仅允许同一个类中的成员访问。如果要在外部修改,则需要调用方法。
修饰方法中的局部变量时,只能被该方法访问。

由于对访问权限的高度限制,private常常用于保护数据,防止内存泄露。

3.default
default的权限介于public和private之间。它允许同一个包下的不同类访问。

4.protected
当构造ADT时,子类通常只会对父类的方法进行一部分的修改,所以需要使用父类中已经实现的一些方法。protected修饰的内容可以在子类中直接使用。
同时,protected还兼具了default的功能,允许同一个包下的不同类访问。

方法2,自己封装两个方法用于获取

package test;
class Person{private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName(){return this.name ;}public int getAge(){return this.age;}
}
class Student extends Person{private String school;public Student(String name,int age,String school){super(name,age);this.school = school;}public String toString(){return  super.getName() + super.getAge() + this.school ;}
}
public class example {public static void main(String[] args) {Student h = new Student("暖光",5,"握草");System.out.print(h.toString());//默认打印的是对象的内存地址,所以输出是:test.Student@64c64813//重写Student的toString方法?}}

应该就这样了,这点问题花了我很多个小时,哈哈哈  也学到了很多东西。

课时62:继承定义限制

1、Java中不允许多重继承,只允许多层继承。理论上一般层次不超过三层

子类可以继承父类中的所有操作结构,但是对于私有操作属于隐式继承,所有的非私有操作属于显式继承。

多层继承

class A {}
class B extends A {}
class C extends B {}

继承一旦发生,所有的操作都可以被子类使用。

package test;
class Person{private String name;public void setName(String name){this.name=name;}public String getName(){return this.name;}
}
class Student extends Person{public Student(String name){setName(name);}public void fun(){System.out.println(getName());}
}
public class example {public static void main(String[] args) {Student stu = new Student("哎呀") ;stu.fun() ;}}

Java基础(扩充中...)相关推荐

  1. 【博学谷学习记录】超强总结,用心分享 | 第2周:Java基础学习中初学者常见错误(2)

    本周继续学习JavaSE当中的高级部分,总结的常见错误如下. 1.静态vs非静态 对于类当中的成员,可以分为静态和非静态的区别,其中静态中可以调用非静态方法,但非静态无法调用静态方法. 这个对于初学者 ...

  2. JAVA基础面试中的几个问题

    一.JAVA中的8种基本数据类型? 答:四种整型:byte.shor. int. long        两种浮点:flout .double       一种字符型:char      一种布尔型: ...

  3. 【博学谷学习记录】超强总结,用心分享 | 第1周:Java基础学习中初学者常见错误(1)

    相较于之前学习过的Python而言,Java属于一种强类型的编程语言.也就是说,对于定义每个变量时,都要明确相应的类型,才可能使用. 如果是从弱类型语言转换过来,可能刚开始会不太适应,但这种强类型的定 ...

  4. [Java基础]字符串中的编码解码问题

  5. java基础—Objcet中的equals方法重写

    package mytest;public class Test1{public static void main(String[] args) {Person p1 = new Person(20) ...

  6. java基础知识的一些细节问题

    java基础知识中有一些细节问题其实还是挺重要的,如果平时不注意可能就会犯错(面试中也有可能会问到),针对平时遇到的一些java基础知识中的一些细节做一些总结,以后遇到更多,再继续添加. 目录 1.异 ...

  7. 大学Java基础课程设计——网络聊天室

    不登高山,不知天之高也:不临深溪,不知地之厚也. | @Author:TTODS 目录 项目简介 系统设计与实现 聊天室系统的总体设计 服务器端功能设计 客户端功能设计 数据包 用户操作处理流程 客户 ...

  8. 如何系统学习Java基础

    下图是整个Java语言基础学习章节大纲,搜索关注<Java软件编程之家>微信公众号,关注后发送"Java"关键字即可获取java基础更新中的章节,目前作者正在拼命更新中 ...

  9. 【学习记录-java】Java基础学习笔记

    学习Java的一些笔记 前言 java中字符串的比较 Stream 流之 sorted 运算符 Java包(package)的命名规范&规则 SWITCH CASE java中import作用 ...

  10. java的eclipse_Java中Eclipse的使用

    Eclipse是跨平台的自由集成开发环境(IDE),初衷主要为Java语言的定制.第一次使用就喜欢上了它.它可以帮我们导入包,而不需要我们导入,有很多快捷键提供我们使用,方便节省时间:最值得我喜欢的是 ...

最新文章

  1. 7软件质量与测试规范
  2. IAR在线调试时用DEBUG打印调试信息
  3. 我国中等收入群体为应付生活压力 透支半生财富
  4. PHP对抗web扫描器的脚本技巧
  5. javaee后台适合用的编辑器插件
  6. [css] 标签、class和id选择器三者的区别是什么?分别在什么时候用?
  7. 洛谷P5831题题解(Java语言描述)
  8. 基于RTP协议的数据通讯程序
  9. Spark写入MySQL报错乱码+报错
  10. OpenShift 4 - 向OpenShift内部Image Registry推送Image
  11. 连载:面向对象葵花宝典:思想、技巧与实践(34) - DIP原则
  12. ZABBIX自动发现Redis端口并监控
  13. linq 根据指定条件返回集合中不重复的元素
  14. 【[小说/游戏]设定】The Dreamy World 夢世界
  15. Labelme标注软件下载安装教程
  16. 基于VUE+SpringBoot的旅游管理系统哦--前后端分离
  17. 计算摄影 | 摄像机成像原理及参数解析
  18. 只有一条线的生存分析图 复杂一点的生存分析 及其参数详细解释
  19. 见证成长,PostgreSQL线上沙龙感谢有你
  20. android 画布心形,用CANVAS实现的心形动画效果

热门文章

  1. 如何评价蚂蚁的ant-design-vue UI框架
  2. 第109篇 Compound 中的 Liquidate
  3. STM32之bxCAN
  4. 灿谷惨到“谷底”?总市值半年蒸发154亿元,CEO林佳元已提前减持
  5. python 量化交易 库_Quant-trading:Python量化交易策略库
  6. 利用python实现计算不同长度蛋白质RMSD
  7. Lambda表达式语法 (二)
  8. 你知道如何修改单选框、复选框、下拉框的默认样式吗
  9. 语音识别技术突飞猛进,语音识别公司都有哪些?
  10. 微信自动回复+图片识别