^只有真真和假假为假
! !true=false
$只有都为true为真其余都为假
l 只有双false为假
双的左边对的就不执行 其余都一样
一个数^同一个数两次那么等于一个数而不是那个数 比如(3^5)^5为三
if else 可以和三元运算符通用 当有具体结果时 用三元运算符
if可以对具体的值进行判断,可以对区间进行判断,对布尔类型的表达式进行判断
switch对固定的值,具体的值,进行判断
X%X 相同数值为0
无限循环while(true){} for(;;){}
一般有循环次数的for条件whilel,另外for循环结束后变量消失 while结束后还能使用变量
栈内存:变量 变量所属作用于一旦结束 变量就自动释放
堆内存:数组和对象 你凡是new的都在堆里 堆内存的变量只都有默认值 类型不同值不同 int是0 boolean false char
匿名函数:对象方法仅使用一次
如:Car c=new Car();
c.run();
简写成 new Car().run();
private:
class Person{
//私有的只在本类中有效 即使创建对象也访问不到
private int age;
void speak(){
System.out.println("age"+age);
}
}
public class JiChen_demo {
public static void main(String[] args) {
//这里即使new也访问不了
}
}
构造函数:没有返回值因为它是方法 方法名和类名一致 没有返回值
一般没有定义构造函数默认也有函数比l如class demo{//里面有demo(){}}
什么时候用呢?在描述事物时,已经存在一些细节那么用定义在构造函数里
- class Person{
- private String name ;
- private int age ;
- //定义一个Person类的构造函数
- //构造函数,而且是空参数的
- Person(){
- System.out.println("person run");
- }
- public void speak(){
- System.out.println(name + ":" + age);
- }
- }
- class ConsDemo{
- public static void main(String[] args){
- //构造函数:构建创造对象时调用的函数
- //作用:可以给对象进行初始化
- Person p = new Person();
- p.speak();
- }
- }
- class Person_1{
- private String name ;
- private int age ;
- Person_1(){
- name = "baby" ;
- age = 1;
- System.out.println("person run");
- }
- //如果有的孩子一出生就有名字
- Person_1(String n){//有参构造器
- name = n;
- }
- //如果有的孩子一出生就有名字和年龄
- Person_1(String n, int a){//有参构造器
- name = n;
- age = a;
- }
- public void speak(){
- System.out.println(name + ":" + age);
- }
- }
- class ConsDemo_1{
- public static void main(String[] args){
- Person_1 p1 = new Person_1();//创建对象Person_1的同时,已经调用了无参构造函数了。
- p1.speak();
- Person_1 p2 = new Person_1("家仪" );
- p2.speak();
- Person_1 p3 = new Person_1("张家" ,10);
- p3.speak();
- }
- }
- person run
baby:1
家仪:0
张家:10
this:调用的就是所在函数所属对象的引用 所在函数就是比如构造函数Person(String name){this.name=name} 所在对象就是Person p1=new Person("哈哈");
this在那个函数,那个函数属于那个对象 就是this的原理
this也可以调用其他函数
person(string name){
this.name=name;
}
Person(String name,int age){
this(name);//要放在第一行
this.age=age;
}
static:静态修饰后 不需要创建对象直接输出可以打印
比如:class Person{
String name;
static String guoji="CN";
public void show(){
sop(guoji+":"+name);
}
class abc{
主函数{
sop(Person.guoji);
}
}
}
静态变量 可以对变量进行调用 类名也可以调用
静态方法只能访问静态成员(变量和函数),比如如下代码:
class Person{
String name;
static String country ="CN";
}
public static void show(){
sop(name=":"+country);//报错了 因为有非静态
}
class StaticDemo{
主函数{
Person.show();
}
}
静态中不能this和super关键字方法 记住哦主函数是静态的
静态什么时候:只能修饰成员(附属修饰函数这就是什么时候用)比如我变量有特有数据是相同的,函数要不要修饰就看一点,是否访问到这个特有的对象
静态代码块随着类的执行而执行,用于初始化(比如我有很多静态成员我需要一个计算 在static{}里执行后直接可以用了)
比如class StaticDemo{
static{
}
class xx{主函数}
{构造函数代码块 能所有的对象初始化} 比如我下面有个构造函数 输出娃娃 在构造代码块里放入那个函数就所以娃娃了
设计模式就是解决问题的方法,单例设计:一个类在内存里的对象唯一性
必须对多个程序使用同一个配置信息时,就必须对该对象保证唯一性
如何保证唯一性:
1.私有化该类的构造函数
2.通过new在本类中创建一个本类对象
3.定义一个公有的方法,将创建的对象返回
javase支持单继承就是class A{} classB{}class C extends classA() 但是不支持多继承就是classC extends classA,B
java里支持多继承 C继承B B继承A